xref: /DragonOS/kernel/src/libs/unistd.c (revision 77c928f6ce3192c79ea42ab7bcba2713e289f73b)
1 #include <common/unistd.h>
2 #include <common/glib.h>
3 
4 /**
5  * @brief fork当前进程
6  *
7  * @return pid_t
8  */
9 pid_t fork(void)
10 {
11     return (pid_t)enter_syscall_int(SYS_FORK, 0, 0, 0, 0, 0, 0, 0, 0);
12 }
13 
14 /**
15  * @brief vfork当前进程
16  *
17  * @return pid_t
18  */
19 pid_t vfork(void)
20 {
21     return (pid_t)enter_syscall_int(SYS_VFORK, 0, 0, 0, 0, 0, 0, 0, 0);
22 }
23 
24 void swab(void *restrict src, void *restrict dest, ssize_t nbytes)
25 {
26     unsigned char buf[32];
27     char *_src = src;
28     char *_dest = dest;
29     uint32_t transfer;
30     for (; nbytes > 0; nbytes -= transfer)
31     {
32         transfer = (nbytes > 32) ? 32 : nbytes;
33         memcpy(buf, _src, transfer);
34         memcpy(_src, _dest, transfer);
35         memcpy(_dest, buf, transfer);
36         _src += transfer;
37         _dest += transfer;
38     }
39 }