about summary refs log tree commit diff
path: root/arch
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2015-04-01 19:12:18 -0400
committerRich Felker <dalias@aerifal.cx>2015-04-01 19:12:18 -0400
commitdfc1a37c441fe271dfb19c7de62acadc73e255aa (patch)
tree24bfce148936dbb771fcdf41690fcecb9667cb1d /arch
parentb24d813d24c412a2e78bab8ef224a1d4c7c25de8 (diff)
downloadmusl-dfc1a37c441fe271dfb19c7de62acadc73e255aa.tar.gz
musl-dfc1a37c441fe271dfb19c7de62acadc73e255aa.tar.xz
musl-dfc1a37c441fe271dfb19c7de62acadc73e255aa.zip
aarch64: fix definition of sem_nsems in semid_ds structure
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.
Diffstat (limited to 'arch')
-rw-r--r--arch/aarch64/bits/sem.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/aarch64/bits/sem.h b/arch/aarch64/bits/sem.h
index 6ac93365..e46ced95 100644
--- a/arch/aarch64/bits/sem.h
+++ b/arch/aarch64/bits/sem.h
@@ -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;
 };