xref: /DragonOS/kernel/src/libs/unistd.c (revision 46e234aef65c081393fb7652e0ad2bae26786ce4)
1*fb6c29d0Slogin #include <common/unistd.h>
2*fb6c29d0Slogin #include <common/glib.h>
3*fb6c29d0Slogin 
4*fb6c29d0Slogin 
swab(void * restrict src,void * restrict dest,ssize_t nbytes)5*fb6c29d0Slogin void swab(void *restrict src, void *restrict dest, ssize_t nbytes)
6*fb6c29d0Slogin {
7*fb6c29d0Slogin     unsigned char buf[32];
8*fb6c29d0Slogin     char *_src = src;
9*fb6c29d0Slogin     char *_dest = dest;
10*fb6c29d0Slogin     uint32_t transfer;
11*fb6c29d0Slogin     for (; nbytes > 0; nbytes -= transfer)
12*fb6c29d0Slogin     {
13*fb6c29d0Slogin         transfer = (nbytes > 32) ? 32 : nbytes;
14*fb6c29d0Slogin         memcpy(buf, _src, transfer);
15*fb6c29d0Slogin         memcpy(_src, _dest, transfer);
16*fb6c29d0Slogin         memcpy(_dest, buf, transfer);
17*fb6c29d0Slogin         _src += transfer;
18*fb6c29d0Slogin         _dest += transfer;
19*fb6c29d0Slogin     }
20*fb6c29d0Slogin }