From f6e2f7e13f0edb1bb1d94e6ad4bf44abffd048d1 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Tue, 11 Mar 2014 15:27:13 -0400 Subject: [PATCH] move struct semid_ds to from shared sys/sem.h to bits the definition was found to be incorrect at least for powerpc, and fixing this cleanly requires making the definition arch-specific. this will allow cleaning up the definition for other archs to make it more specific, and reversing some of the ugliness (time_t hacks) introduced with the x32 port. this first commit simply copies the existing definition to each arch without any changes. this is intentional, to make it easier to review changes made on a per-arch basis. --- arch/arm/bits/sem.h | 16 ++++++++++++++++ arch/i386/bits/sem.h | 16 ++++++++++++++++ arch/microblaze/bits/sem.h | 16 ++++++++++++++++ arch/mips/bits/sem.h | 16 ++++++++++++++++ arch/powerpc/bits/sem.h | 16 ++++++++++++++++ arch/sh/bits/sem.h | 16 ++++++++++++++++ arch/x32/bits/sem.h | 16 ++++++++++++++++ arch/x86_64/bits/sem.h | 16 ++++++++++++++++ include/sys/sem.h | 17 +---------------- 9 files changed, 129 insertions(+), 16 deletions(-) create mode 100644 arch/arm/bits/sem.h create mode 100644 arch/i386/bits/sem.h create mode 100644 arch/microblaze/bits/sem.h create mode 100644 arch/mips/bits/sem.h create mode 100644 arch/powerpc/bits/sem.h create mode 100644 arch/sh/bits/sem.h create mode 100644 arch/x32/bits/sem.h create mode 100644 arch/x86_64/bits/sem.h diff --git a/arch/arm/bits/sem.h b/arch/arm/bits/sem.h new file mode 100644 index 00000000..c629b81e --- /dev/null +++ b/arch/arm/bits/sem.h @@ -0,0 +1,16 @@ +struct semid_ds { + struct ipc_perm sem_perm; + time_t sem_otime; + time_t __unused1; + time_t sem_ctime; + time_t __unused2; +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned short sem_nsems; + char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; +#else + char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; + unsigned short sem_nsems; +#endif + time_t __unused3; + time_t __unused4; +}; diff --git a/arch/i386/bits/sem.h b/arch/i386/bits/sem.h new file mode 100644 index 00000000..c629b81e --- /dev/null +++ b/arch/i386/bits/sem.h @@ -0,0 +1,16 @@ +struct semid_ds { + struct ipc_perm sem_perm; + time_t sem_otime; + time_t __unused1; + time_t sem_ctime; + time_t __unused2; +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned short sem_nsems; + char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; +#else + char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; + unsigned short sem_nsems; +#endif + time_t __unused3; + time_t __unused4; +}; diff --git a/arch/microblaze/bits/sem.h b/arch/microblaze/bits/sem.h new file mode 100644 index 00000000..c629b81e --- /dev/null +++ b/arch/microblaze/bits/sem.h @@ -0,0 +1,16 @@ +struct semid_ds { + struct ipc_perm sem_perm; + time_t sem_otime; + time_t __unused1; + time_t sem_ctime; + time_t __unused2; +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned short sem_nsems; + char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; +#else + char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; + unsigned short sem_nsems; +#endif + time_t __unused3; + time_t __unused4; +}; diff --git a/arch/mips/bits/sem.h b/arch/mips/bits/sem.h new file mode 100644 index 00000000..c629b81e --- /dev/null +++ b/arch/mips/bits/sem.h @@ -0,0 +1,16 @@ +struct semid_ds { + struct ipc_perm sem_perm; + time_t sem_otime; + time_t __unused1; + time_t sem_ctime; + time_t __unused2; +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned short sem_nsems; + char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; +#else + char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; + unsigned short sem_nsems; +#endif + time_t __unused3; + time_t __unused4; +}; diff --git a/arch/powerpc/bits/sem.h b/arch/powerpc/bits/sem.h new file mode 100644 index 00000000..c629b81e --- /dev/null +++ b/arch/powerpc/bits/sem.h @@ -0,0 +1,16 @@ +struct semid_ds { + struct ipc_perm sem_perm; + time_t sem_otime; + time_t __unused1; + time_t sem_ctime; + time_t __unused2; +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned short sem_nsems; + char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; +#else + char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; + unsigned short sem_nsems; +#endif + time_t __unused3; + time_t __unused4; +}; diff --git a/arch/sh/bits/sem.h b/arch/sh/bits/sem.h new file mode 100644 index 00000000..c629b81e --- /dev/null +++ b/arch/sh/bits/sem.h @@ -0,0 +1,16 @@ +struct semid_ds { + struct ipc_perm sem_perm; + time_t sem_otime; + time_t __unused1; + time_t sem_ctime; + time_t __unused2; +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned short sem_nsems; + char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; +#else + char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; + unsigned short sem_nsems; +#endif + time_t __unused3; + time_t __unused4; +}; diff --git a/arch/x32/bits/sem.h b/arch/x32/bits/sem.h new file mode 100644 index 00000000..c629b81e --- /dev/null +++ b/arch/x32/bits/sem.h @@ -0,0 +1,16 @@ +struct semid_ds { + struct ipc_perm sem_perm; + time_t sem_otime; + time_t __unused1; + time_t sem_ctime; + time_t __unused2; +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned short sem_nsems; + char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; +#else + char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; + unsigned short sem_nsems; +#endif + time_t __unused3; + time_t __unused4; +}; diff --git a/arch/x86_64/bits/sem.h b/arch/x86_64/bits/sem.h new file mode 100644 index 00000000..c629b81e --- /dev/null +++ b/arch/x86_64/bits/sem.h @@ -0,0 +1,16 @@ +struct semid_ds { + struct ipc_perm sem_perm; + time_t sem_otime; + time_t __unused1; + time_t sem_ctime; + time_t __unused2; +#if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned short sem_nsems; + char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; +#else + char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; + unsigned short sem_nsems; +#endif + time_t __unused3; + time_t __unused4; +}; diff --git a/include/sys/sem.h b/include/sys/sem.h index 6ee3dd5a..e7c36980 100644 --- a/include/sys/sem.h +++ b/include/sys/sem.h @@ -27,22 +27,7 @@ extern "C" { #include -struct semid_ds { - struct ipc_perm sem_perm; - time_t sem_otime; - time_t __unused1; - time_t sem_ctime; - time_t __unused2; -#if __BYTE_ORDER == __LITTLE_ENDIAN - unsigned short sem_nsems; - char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; -#else - char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; - unsigned short sem_nsems; -#endif - time_t __unused3; - time_t __unused4; -}; +#include #define _SEM_SEMUN_UNDEFINED 1 -- GitLab