aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-generic/sembuf.h
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2009-05-13 22:56:26 +0000
committerArnd Bergmann <arnd@klappe2.(none)>2009-06-11 21:02:15 +0200
commit2864d32be31a20a4617e37a857dd9915a57e2efb (patch)
treef1ed8d5c0bad71fac98b5d255d6f6c9eca0e79f4 /include/asm-generic/sembuf.h
parentc31ae4bb4a9fa4606a74c0a4fb61b74f804e861e (diff)
downloadkernel_samsung_smdk4412-2864d32be31a20a4617e37a857dd9915a57e2efb.zip
kernel_samsung_smdk4412-2864d32be31a20a4617e37a857dd9915a57e2efb.tar.gz
kernel_samsung_smdk4412-2864d32be31a20a4617e37a857dd9915a57e2efb.tar.bz2
asm-generic: add generic sysv ipc headers
The ipc64 data structures were originally meant to be architecture specific so that each architecture could add their own optimizations for padding. In the end, most of them just copied the x86 version, and most got that wrong. UClibc expects the x86 anyway, so we might just declare that the default and get rid of the extra copies. Signed-off-by: Remis Lima Baima <remis.developer@googlemail.com> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'include/asm-generic/sembuf.h')
-rw-r--r--include/asm-generic/sembuf.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/include/asm-generic/sembuf.h b/include/asm-generic/sembuf.h
new file mode 100644
index 0000000..4cb2c13
--- /dev/null
+++ b/include/asm-generic/sembuf.h
@@ -0,0 +1,38 @@
+#ifndef __ASM_GENERIC_SEMBUF_H
+#define __ASM_GENERIC_SEMBUF_H
+
+#include <asm/bitsperlong.h>
+
+/*
+ * The semid64_ds structure for x86 architecture.
+ * Note extra padding because this structure is passed back and forth
+ * between kernel and user space.
+ *
+ * semid64_ds was originally meant to be architecture specific, but
+ * everyone just ended up making identical copies without specific
+ * optimizations, so we may just as well all use the same one.
+ *
+ * 64 bit architectures typically define a 64 bit __kernel_time_t,
+ * so they do not need the first two padding words.
+ * On big-endian systems, the padding is in the wrong place.
+ *
+ * Pad space is left for:
+ * - 64-bit time_t to solve y2038 problem
+ * - 2 miscellaneous 32-bit values
+ */
+struct semid64_ds {
+ struct ipc64_perm sem_perm; /* permissions .. see ipc.h */
+ __kernel_time_t sem_otime; /* last semop time */
+#if __BITS_PER_LONG != 64
+ unsigned long __unused1;
+#endif
+ __kernel_time_t sem_ctime; /* last change time */
+#if __BITS_PER_LONG != 64
+ unsigned long __unused2;
+#endif
+ unsigned long sem_nsems; /* no. of semaphores in array */
+ unsigned long __unused3;
+ unsigned long __unused4;
+};
+
+#endif /* __ASM_GENERIC_SEMBUF_H */