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.
This commit is contained in:
parent
b5b43b6d62
commit
07e865cc5a
12 changed files with 96 additions and 66 deletions
|
|
@ -11,13 +11,27 @@ extern "C" {
|
|||
|
||||
#include <bits/alltypes.h>
|
||||
|
||||
#ifdef _GNU_SOURCE
|
||||
#define __ipc_perm_key key
|
||||
#define __ipc_perm_seq seq
|
||||
#endif
|
||||
|
||||
#include <bits/ipc.h>
|
||||
|
||||
#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
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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 <bits/msg.h>
|
||||
|
||||
#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);
|
||||
|
|
|
|||
|
|
@ -10,6 +10,34 @@
|
|||
#include <sys/ipc.h>
|
||||
#include <bits/shm.h>
|
||||
|
||||
#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 *);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue