diff options
author | Dmitry Chestnykh <dm.chestnykh@gmail.com> | 2024-02-29 20:11:16 +0300 |
---|---|---|
committer | Waldemar Brodkorb <wbx@openadk.org> | 2024-02-29 19:10:28 +0100 |
commit | 2a8b04b20f65ab05d0639ba5f95cb28659a5c020 (patch) | |
tree | c8aa5ac4c8bb1bccb862084d14a4019d8dc294d8 /libc/sysdeps/linux | |
parent | e0a92849688f557d3e7153ecf6505ee1eedd7248 (diff) |
libc: restore correct definition of semid_ds struct.
Previously the common definition of this structure was broken by a mistake.
Restore it correctly for all needed architectures and all use cases.
Signed-off-by: Dmitry Chestnykh <dm.chestnykh@gmail.com>
Diffstat (limited to 'libc/sysdeps/linux')
-rw-r--r-- | libc/sysdeps/linux/common/bits/sem.h | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/libc/sysdeps/linux/common/bits/sem.h b/libc/sysdeps/linux/common/bits/sem.h index 06a256259..1c0836c6d 100644 --- a/libc/sysdeps/linux/common/bits/sem.h +++ b/libc/sysdeps/linux/common/bits/sem.h @@ -39,22 +39,33 @@ struct semid_ds { struct ipc_perm sem_perm; /* operation permission struct */ - +#if defined(__UCLIBC_USE_TIME64__) unsigned long int __sem_otime_internal_1; unsigned long int __sem_otime_internal_2; +#else + __time_t sem_otime; /* last semop() time */ +#endif +#if (__WORDSIZE == 32 && !defined(__arm__) && !defined(__or1k__) && !defined(__xtensa__)) || \ + ((defined(__arm__) || defined(__or1k__) || defined(__xtensa__)) && !defined(__UCLIBC_USE_TIME64__)) + unsigned long int __uclibc_unused1; +#endif +#if defined(__UCLIBC_USE_TIME64__) unsigned long int __sem_ctime_internal_1; unsigned long int __sem_ctime_internal_2; -#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ - unsigned short int sem_nsems; /* number of semaphores in set */ - char __paddind[sizeof(long int) - sizeof(short int)]; #else - char __padding[sizeof(long int) - sizeof(short int)]; - unsigned short int sem_nsems; /* number of semaphores in set */ + __time_t sem_ctime; /* last time changed by semctl() */ #endif - unsigned long int __uclibc_unused3; - unsigned long int __uclibc_unused4; +#if (__WORDSIZE == 32 && !defined(__arm__) && !defined(__or1k__) && !defined(__xtensa__)) || \ + ((defined(__arm__) || defined(__or1k__) || defined(__xtensa__)) && !defined(__UCLIBC_USE_TIME64__)) + unsigned long int __uclibc_unused2; +#endif + unsigned long int sem_nsems; /* number of semaphores in set */ +#if defined(__UCLIBC_USE_TIME64__) __time_t sem_otime; /* last semop() time */ __time_t sem_ctime; /* last time changed by semctl() */ +#endif + unsigned long int __uclibc_unused3; + unsigned long int __uclibc_unused4; }; /* The user should define a union like the following to use it for arguments |