mirror of git://git.musl-libc.org/musl
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
|
@ -1,25 +1,12 @@
|
|||
#define IPC_CREAT 01000
|
||||
#define IPC_EXCL 02000
|
||||
#define IPC_NOWAIT 04000
|
||||
|
||||
#define IPC_RMID 0
|
||||
#define IPC_SET 1
|
||||
#define IPC_STAT 2
|
||||
#ifdef _GNU_SOURCE
|
||||
#define IPC_INFO 3
|
||||
#endif
|
||||
|
||||
#define IPC_PRIVATE ((key_t) 0)
|
||||
|
||||
struct ipc_perm
|
||||
{
|
||||
key_t key;
|
||||
key_t __ipc_perm_key;
|
||||
uid_t uid;
|
||||
gid_t gid;
|
||||
uid_t cuid;
|
||||
gid_t cgid;
|
||||
mode_t mode;
|
||||
int seq;
|
||||
int __ipc_perm_seq;
|
||||
long __pad1;
|
||||
long __pad2;
|
||||
};
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
struct msqid_ds
|
||||
{
|
||||
struct ipc_perm msg_perm;
|
||||
time_t msg_stime;
|
||||
int __unused1;
|
||||
time_t msg_rtime;
|
||||
int __unused2;
|
||||
time_t msg_ctime;
|
||||
int __unused3;
|
||||
unsigned long msg_cbytes;
|
||||
msgqnum_t msg_qnum;
|
||||
msglen_t msg_qbytes;
|
||||
pid_t msg_lspid;
|
||||
pid_t msg_lrpid;
|
||||
unsigned long __unused[2];
|
||||
};
|
|
@ -1,21 +1,15 @@
|
|||
#define SHMLBA 4096
|
||||
|
||||
#define SHM_RDONLY 010000
|
||||
#define SHM_RND 020000
|
||||
#define SHM_REMAP 040000
|
||||
#define SHM_EXEC 0100000
|
||||
|
||||
/* linux extensions */
|
||||
#define SHM_LOCK 11
|
||||
#define SHM_UNLOCK 12
|
||||
|
||||
struct shmid_ds
|
||||
{
|
||||
struct ipc_perm shm_perm;
|
||||
size_t shm_segsz;
|
||||
time_t shm_atime;
|
||||
int __unused1;
|
||||
time_t shm_dtime;
|
||||
int __unused2;
|
||||
time_t shm_ctime;
|
||||
int __unused3;
|
||||
pid_t shm_cpid;
|
||||
pid_t shm_lpid;
|
||||
unsigned long shm_nattch;
|
||||
|
|
|
@ -1,25 +1,12 @@
|
|||
#define IPC_CREAT 01000
|
||||
#define IPC_EXCL 02000
|
||||
#define IPC_NOWAIT 04000
|
||||
|
||||
#define IPC_RMID 0
|
||||
#define IPC_SET 1
|
||||
#define IPC_STAT 2
|
||||
#ifdef _GNU_SOURCE
|
||||
# define IPC_INFO 3 /* See ipcs. */
|
||||
#endif
|
||||
|
||||
#define IPC_PRIVATE ((key_t) 0)
|
||||
|
||||
struct ipc_perm
|
||||
{
|
||||
key_t key;
|
||||
key_t __ipc_perm_key;
|
||||
uid_t uid;
|
||||
gid_t gid;
|
||||
uid_t cuid;
|
||||
gid_t cgid;
|
||||
mode_t mode;
|
||||
int seq;
|
||||
int __ipc_perm_seq;
|
||||
long __pad1;
|
||||
long __pad2;
|
||||
};
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
struct msqid_ds
|
||||
{
|
||||
struct ipc_perm msg_perm;
|
||||
time_t msg_stime;
|
||||
time_t msg_rtime;
|
||||
time_t msg_ctime;
|
||||
unsigned long msg_cbytes;
|
||||
msgqnum_t msg_qnum;
|
||||
msglen_t msg_qbytes;
|
||||
pid_t msg_lspid;
|
||||
pid_t msg_lrpid;
|
||||
unsigned long __unused[2];
|
||||
};
|
|
@ -1,14 +1,5 @@
|
|||
#define SHMLBA 4096
|
||||
|
||||
#define SHM_RDONLY 010000
|
||||
#define SHM_RND 020000
|
||||
#define SHM_REMAP 040000
|
||||
#define SHM_EXEC 0100000
|
||||
|
||||
/* linux extensions */
|
||||
#define SHM_LOCK 11
|
||||
#define SHM_UNLOCK 12
|
||||
|
||||
struct shmid_ds
|
||||
{
|
||||
struct ipc_perm shm_perm;
|
||||
|
|
|
@ -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 *);
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
int msgctl(int q, int cmd, struct msqid_ds *buf)
|
||||
{
|
||||
#ifdef SYS_msgctl
|
||||
return syscall(SYS_msgctl, q, cmd, buf);
|
||||
return syscall(SYS_msgctl, q, cmd | 0x100, buf);
|
||||
#else
|
||||
return syscall(SYS_ipc, IPCOP_msgctl, q, cmd, buf);
|
||||
return syscall(SYS_ipc, IPCOP_msgctl, q, cmd | 0x100, 0, buf, 0);
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ int semctl(int id, int num, int cmd, ...)
|
|||
arg = va_arg(ap, long);
|
||||
va_end(ap);
|
||||
#ifdef SYS_semctl
|
||||
return syscall(SYS_semctl, id, num, cmd, arg);
|
||||
return syscall(SYS_semctl, id, num, cmd | 0x100, arg);
|
||||
#else
|
||||
return syscall(SYS_ipc, IPCOP_semctl, id, num, cmd | 0x100, &arg);
|
||||
#endif
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
int shmctl(int id, int cmd, struct shmid_ds *buf)
|
||||
{
|
||||
#ifdef SYS_shmctl
|
||||
return syscall(SYS_shmctl, id, cmd, buf);
|
||||
return syscall(SYS_shmctl, id, cmd | IPC_MODERN, buf);
|
||||
#else
|
||||
return syscall(SYS_ipc, IPCOP_shmctl, id, cmd | IPC_MODERN, buf);
|
||||
return syscall(SYS_ipc, IPCOP_shmctl, id, cmd | IPC_MODERN, 0, buf, 0);
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue