aarch64: fix definition of sem_nsems in semid_ds structure
authorRich Felker <dalias@aerifal.cx>
Wed, 1 Apr 2015 23:12:18 +0000 (19:12 -0400)
committerRich Felker <dalias@aerifal.cx>
Wed, 1 Apr 2015 23:12:18 +0000 (19:12 -0400)
POSIX requires the sem_nsems member to have type unsigned short. we
have to work around the incorrect kernel type using matching
endian-specific padding.

arch/aarch64/bits/sem.h

index 6ac933657a57433a984ea58592d421cd1da9a678..e46ced95d2be4c4ef568b4717d1012d1cfdb2d30 100644 (file)
@@ -2,7 +2,13 @@ struct semid_ds {
        struct ipc_perm sem_perm;
        time_t sem_otime;
        time_t sem_ctime;
-       time_t sem_nsems;
+#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;
 };