From 07e865cc5afb11e6e882e998306ab0f7fb64357e Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Wed, 13 Apr 2011 16:45:43 -0400 Subject: numerous fixes to sysv ipc some of these definitions were just plain wrong, others based on outdated ancient "non-64" versions of the kernel interface. as much as possible has now been moved out of bits/* these changes break abi (the old abi for these functions was wrong), but since they were not working anyway it can hardly matter. --- include/sys/ipc.h | 18 ++++++++++++++++-- include/sys/msg.h | 22 +++++++++++----------- include/sys/shm.h | 28 ++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 13 deletions(-) (limited to 'include') diff --git a/include/sys/ipc.h b/include/sys/ipc.h index 9de9f3e7..8e2f7172 100644 --- a/include/sys/ipc.h +++ b/include/sys/ipc.h @@ -11,13 +11,27 @@ extern "C" { #include +#ifdef _GNU_SOURCE +#define __ipc_perm_key key +#define __ipc_perm_seq seq +#endif + #include +#define IPC_CREAT 01000 +#define IPC_EXCL 02000 +#define IPC_NOWAIT 04000 + +#define IPC_RMID 0 +#define IPC_SET 1 +#define IPC_STAT 2 +#define IPC_INFO 3 + +#define IPC_PRIVATE ((key_t) 0) + key_t ftok (const char *, int); #ifdef __cplusplus } #endif #endif - - diff --git a/include/sys/msg.h b/include/sys/msg.h index 4ae522fb..06f25533 100644 --- a/include/sys/msg.h +++ b/include/sys/msg.h @@ -14,20 +14,20 @@ typedef unsigned long msgqnum_t; typedef unsigned long msglen_t; -struct msqid_ds -{ - struct ipc_perm msg_perm; - time_t msg_stime; - time_t msg_rtime; - time_t msg_ctime; - msgqnum_t msg_qnum; - msglen_t msg_qbytes; - pid_t msg_lspid; - pid_t msg_lrpid; -}; +#include + +#define __msg_cbytes msg_cbytes #define MSG_NOERROR 010000 +#define MSG_STAT 11 +#define MSG_INFO 12 + +struct msginfo { + int msgpool, msgmap, msgmax, msgmnb, msgmni, msgssz, msgtql; + unsigned short msgseg; +}; + int msgctl (int, int, struct msqid_ds *); int msgget (key_t, int); ssize_t msgrcv (int, void *, size_t, long, int); diff --git a/include/sys/shm.h b/include/sys/shm.h index 6ebb9412..fa927101 100644 --- a/include/sys/shm.h +++ b/include/sys/shm.h @@ -10,6 +10,34 @@ #include #include +#define SHM_RDONLY 010000 +#define SHM_RND 020000 +#define SHM_REMAP 040000 +#define SHM_EXEC 0100000 + +#define SHM_LOCK 11 +#define SHM_UNLOCK 12 +#define SHM_STAT 13 +#define SHM_INFO 14 +#define SHM_DEST 01000 +#define SHM_LOCKED 02000 +#define SHM_HUGETLB 04000 +#define SHM_NORESERVE 010000 + +struct shminfo { + unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; +}; + +struct shm_info { + int used_ids; + unsigned long shm_tot, shm_rss, shm_swp; +#ifdef _GNU_SOURCE + unsigned long swap_attempts, swap_successes; +#else + unsigned long __reserved[2]; +#endif +}; + void *shmat(int, const void *, int); int shmctl(int, int, struct shmid_ds *); int shmdt(const void *); -- cgit v1.2.1