summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2019-07-31 01:17:53 -0400
committerRich Felker <dalias@aerifal.cx>2019-08-02 00:08:23 -0400
commit3c02bacf0f6bed54979e67d22c43745df9add4a0 (patch)
tree79cefd0e7a63642d08972c5f6d69eeaf12c435d2
parent72f50245d018af0c31b38dec83c557a4e5dd1ea8 (diff)
downloadmusl-3c02bacf0f6bed54979e67d22c43745df9add4a0.tar.gz
allow archs to define IPC_STAT, propagate time64 bit to other macros
to make use of {sem,shm,msg}ctl IPC_STAT functionality to provide 64-bit time_t on 32-bit archs, IPC_STAT and related macros must be defined with bit 8 (0x100) set. allow archs to define IPC_STAT in bits/ipc.h, and define the other macros in terms of it so that they all get the same value of the time64 bit.
-rw-r--r--include/sys/ipc.h2
-rw-r--r--include/sys/msg.h4
-rw-r--r--include/sys/sem.h4
-rw-r--r--include/sys/shm.h4
4 files changed, 8 insertions, 6 deletions
diff --git a/include/sys/ipc.h b/include/sys/ipc.h
index c5a39819..cde376fc 100644
--- a/include/sys/ipc.h
+++ b/include/sys/ipc.h
@@ -29,7 +29,9 @@ extern "C" {
#define IPC_RMID 0
#define IPC_SET 1
+#ifndef IPC_STAT
#define IPC_STAT 2
+#endif
#define IPC_INFO 3
#define IPC_PRIVATE ((key_t) 0)
diff --git a/include/sys/msg.h b/include/sys/msg.h
index be6afc34..db5c62a4 100644
--- a/include/sys/msg.h
+++ b/include/sys/msg.h
@@ -25,9 +25,9 @@ typedef unsigned long msglen_t;
#define MSG_NOERROR 010000
#define MSG_EXCEPT 020000
-#define MSG_STAT 11
+#define MSG_STAT (11 | (IPC_STAT & 0x100))
#define MSG_INFO 12
-#define MSG_STAT_ANY 13
+#define MSG_STAT_ANY (13 | (IPC_STAT & 0x100))
struct msginfo {
int msgpool, msgmap, msgmax, msgmnb, msgmni, msgssz, msgtql;
diff --git a/include/sys/sem.h b/include/sys/sem.h
index 61cdb83d..410c8774 100644
--- a/include/sys/sem.h
+++ b/include/sys/sem.h
@@ -31,9 +31,9 @@ extern "C" {
#define _SEM_SEMUN_UNDEFINED 1
-#define SEM_STAT 18
+#define SEM_STAT (18 | (IPC_STAT & 0x100))
#define SEM_INFO 19
-#define SEM_STAT_ANY 20
+#define SEM_STAT_ANY (20 | (IPC_STAT & 0x100))
struct seminfo {
int semmap;
diff --git a/include/sys/shm.h b/include/sys/shm.h
index 8ef4e8f2..fd708cab 100644
--- a/include/sys/shm.h
+++ b/include/sys/shm.h
@@ -33,9 +33,9 @@ extern "C" {
#define SHM_LOCK 11
#define SHM_UNLOCK 12
-#define SHM_STAT 13
+#define SHM_STAT (13 | (IPC_STAT & 0x100))
#define SHM_INFO 14
-#define SHM_STAT_ANY 15
+#define SHM_STAT_ANY (15 | (IPC_STAT & 0x100))
#define SHM_DEST 01000
#define SHM_LOCKED 02000
#define SHM_HUGETLB 04000