diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-06-06 08:31:46 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-06-06 08:31:46 +0200 |
| commit | dd2f209096eb4ed2ec365149cb19a0c18a9e09e2 (patch) | |
| tree | 34a595cdcbef4caad95c97fae08fb3e673d533e4 /src/libtools/myalign.c | |
| parent | 3b181576c847249303498621e609f7bf059c7597 (diff) | |
| download | box64-dd2f209096eb4ed2ec365149cb19a0c18a9e09e2.tar.gz box64-dd2f209096eb4ed2ec365149cb19a0c18a9e09e2.zip | |
Improvment to a few libc wrapped functions
Diffstat (limited to 'src/libtools/myalign.c')
| -rwxr-xr-x | src/libtools/myalign.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/libtools/myalign.c b/src/libtools/myalign.c index eee1d49f..82d57361 100755 --- a/src/libtools/myalign.c +++ b/src/libtools/myalign.c @@ -6,6 +6,7 @@ #include <sys/epoll.h> #include <fts.h> #include <sys/stat.h> +#include <sys/sem.h> #include "x64emu.h" #include "emu/x64emu_private.h" @@ -747,3 +748,36 @@ void AlignEpollEvent(void* dest, void* source, int nbr) --nbr; } } + +struct __attribute__((packed)) x64_semid_ds { + struct ipc_perm sem_perm; + time_t sem_otime; + unsigned long _reserved1; + time_t sem_ctime; + unsigned long _reserved2; + unsigned long sem_nsems; + unsigned long _reserved3; + unsigned long _reserved4; +}; + +void UnalignSemidDs(void *dest, const void* source) +{ + struct x64_semid_ds *x64_struct = (struct x64_semid_ds*)dest; + const struct semid_ds *arm_struct = (const struct semid_ds*)source; + + x64_struct->sem_perm = arm_struct->sem_perm; + x64_struct->sem_otime = arm_struct->sem_otime; + x64_struct->sem_ctime = arm_struct->sem_ctime; + x64_struct->sem_nsems = arm_struct->sem_nsems; +} + +void AlignSemidDs(void *dest, const void* source) +{ + const struct x64_semid_ds *x64_struct = (const struct x64_semid_ds*)source; + struct semid_ds *arm_struct = (struct semid_ds*)dest; + + arm_struct->sem_perm = x64_struct->sem_perm; + arm_struct->sem_otime = x64_struct->sem_otime; + arm_struct->sem_ctime = x64_struct->sem_ctime; + arm_struct->sem_nsems = x64_struct->sem_nsems; +} |