diff options
author | Rich Felker <dalias@aerifal.cx> | 2014-03-11 17:01:34 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2014-03-11 17:01:34 -0400 |
commit | ad66ae93d083ede90431bacf034f29ebd0815d73 (patch) | |
tree | f575200adf58ea9e7410d5f14515aee5719bb050 /arch/powerpc/bits | |
parent | f6e2f7e13f0edb1bb1d94e6ad4bf44abffd048d1 (diff) | |
download | musl-ad66ae93d083ede90431bacf034f29ebd0815d73.tar.gz musl-ad66ae93d083ede90431bacf034f29ebd0815d73.tar.xz musl-ad66ae93d083ede90431bacf034f29ebd0815d73.zip |
fix sysvipc structures on powerpc
these have been wrong for a long time and were never detected or corrected. powerpc needs some gratuitous extra padding/reserved slots in ipc_perm, big-endian ordering for the padding of time_t slots that was intended by the kernel folks to allow a transition to 64-bit time_t, and some minor gratuitous reordering of struct members.
Diffstat (limited to 'arch/powerpc/bits')
-rw-r--r-- | arch/powerpc/bits/ipc.h | 5 | ||||
-rw-r--r-- | arch/powerpc/bits/msg.h | 6 | ||||
-rw-r--r-- | arch/powerpc/bits/sem.h | 16 | ||||
-rw-r--r-- | arch/powerpc/bits/shm.h | 9 |
4 files changed, 16 insertions, 20 deletions
diff --git a/arch/powerpc/bits/ipc.h b/arch/powerpc/bits/ipc.h index b0bcfa3f..e1bfe2f5 100644 --- a/arch/powerpc/bits/ipc.h +++ b/arch/powerpc/bits/ipc.h @@ -7,8 +7,9 @@ struct ipc_perm gid_t cgid; mode_t mode; int __ipc_perm_seq; - long __pad1; - long __pad2; + int __pad1; + long long __pad2; + long long __pad3; }; #define IPC_64 0x100 diff --git a/arch/powerpc/bits/msg.h b/arch/powerpc/bits/msg.h index 3db8576b..a6b9ad5b 100644 --- a/arch/powerpc/bits/msg.h +++ b/arch/powerpc/bits/msg.h @@ -1,12 +1,12 @@ struct msqid_ds { struct ipc_perm msg_perm; - time_t msg_stime; int __unused1; - time_t msg_rtime; + time_t msg_stime; int __unused2; - time_t msg_ctime; + time_t msg_rtime; int __unused3; + time_t msg_ctime; unsigned long msg_cbytes; msgqnum_t msg_qnum; msglen_t msg_qbytes; diff --git a/arch/powerpc/bits/sem.h b/arch/powerpc/bits/sem.h index c629b81e..bc2d6d1f 100644 --- a/arch/powerpc/bits/sem.h +++ b/arch/powerpc/bits/sem.h @@ -1,16 +1,10 @@ struct semid_ds { struct ipc_perm sem_perm; + int __unused1; time_t sem_otime; - time_t __unused1; + int __unused2; 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; + unsigned short __sem_nsems_pad, sem_nsems; + long __unused3; + long __unused4; }; diff --git a/arch/powerpc/bits/shm.h b/arch/powerpc/bits/shm.h index 547581f1..c698ef34 100644 --- a/arch/powerpc/bits/shm.h +++ b/arch/powerpc/bits/shm.h @@ -3,13 +3,14 @@ struct shmid_ds { struct ipc_perm shm_perm; - size_t shm_segsz; - time_t shm_atime; int __unused1; - time_t shm_dtime; + time_t shm_atime; int __unused2; - time_t shm_ctime; + time_t shm_dtime; int __unused3; + time_t shm_ctime; + int __unused4; + size_t shm_segsz; pid_t shm_cpid; pid_t shm_lpid; unsigned long shm_nattch; |