From dd2f209096eb4ed2ec365149cb19a0c18a9e09e2 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sun, 6 Jun 2021 08:31:46 +0200 Subject: Improvment to a few libc wrapped functions --- src/libtools/myalign.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'src/libtools') 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 #include #include +#include #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; +} -- cgit 1.4.1