diff options
Diffstat (limited to 'newlib/libc/sys/linux/ipc.c')
-rw-r--r-- | newlib/libc/sys/linux/ipc.c | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/newlib/libc/sys/linux/ipc.c b/newlib/libc/sys/linux/ipc.c deleted file mode 100644 index 31e225255..000000000 --- a/newlib/libc/sys/linux/ipc.c +++ /dev/null @@ -1,87 +0,0 @@ -/* libc/sys/linux/ipc.c - IPC semaphore and message queue functions */ - -/* Copyright 2002, Red Hat Inc. */ - -#include <sys/types.h> -#include <sys/sem.h> -#include <sys/msg.h> -#include <stdarg.h> - -#include <machine/syscall.h> - -#define IPC_64 0x100 - -#define IPCOP_semop 1 -#define IPCOP_semget 2 -#define IPCOP_semctl 3 -#define IPCOP_msgsnd 11 -#define IPCOP_msgrcv 12 -#define IPCOP_msgget 13 -#define IPCOP_msgctl 14 - -static _syscall5(int,ipc,int,op,int,arg1,int,arg2,int,arg3,void *,arg4); - -int -semget (key_t key, int nsems, int semflgs) -{ - return __libc_ipc(IPCOP_semget, (int)key, nsems, semflgs, NULL); -} - -int -semctl (int semid, int semnum, int cmd, ...) -{ - va_list va; - union semun { - int val; - struct semid_ds *buf; - unsigned short *array; - } arg; - - va_start (va, cmd); - - arg = va_arg (va, union semun); - - va_end (va); - - return __libc_ipc(IPCOP_semctl, semid, semnum, cmd | IPC_64, &arg); -} - -int -semop (int semid, struct sembuf *sops, size_t nsems) -{ - return __libc_ipc(IPCOP_semop, semid, (int)nsems, 0, sops); -} - -int -msgget (key_t key, int msgflg) -{ - return __libc_ipc(IPCOP_msgget, (int)key, msgflg, 0, NULL); -} - -int -msgctl (int msqid, int cmd, struct msqid_ds *buf) -{ - return __libc_ipc(IPCOP_msgctl, msqid, cmd | IPC_64, 0, buf); -} - -int -msgsnd (int msqid, const void *msgp, size_t msgsz, int msgflg) -{ - return __libc_ipc(IPCOP_msgsnd, msqid, (int)msgsz, msgflg, (void *)msgp); -} - -int -msgrcv (int msqid, void *msgp, size_t msgsz, long int msgtyp, int msgflg) -{ - /* last argument must contain multiple args */ - struct { - void *msgp; - long int msgtyp; - } args; - - args.msgp = msgp; - args.msgtyp = msgtyp; - - return (ssize_t)__libc_ipc(IPCOP_msgrcv, msqid, (int)msgsz, msgflg, &args); -} - |