conclusion
This commit is contained in:
parent
0f97a589b8
commit
9bc8a11afe
1069 changed files with 48694 additions and 11 deletions
10
05/musl-0.6.0/src/ipc/ftok.c
Normal file
10
05/musl-0.6.0/src/ipc/ftok.c
Normal file
|
@ -0,0 +1,10 @@
|
|||
#include <sys/ipc.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
key_t ftok(const char *path, int id)
|
||||
{
|
||||
struct stat st;
|
||||
if (stat(path, &st) < 0) return -1;
|
||||
|
||||
return ((st.st_ino & 0xffff) | ((st.st_dev & 0xff) << 16) | ((id & 0xff) << 24));
|
||||
}
|
13
05/musl-0.6.0/src/ipc/ipc.h
Normal file
13
05/musl-0.6.0/src/ipc/ipc.h
Normal file
|
@ -0,0 +1,13 @@
|
|||
#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
|
||||
#define IPCOP_shmat 21
|
||||
#define IPCOP_shmdt 22
|
||||
#define IPCOP_shmget 23
|
||||
#define IPCOP_shmctl 24
|
||||
|
||||
#define IPC_MODERN 0x100
|
18
05/musl-0.6.0/src/ipc/semctl.c
Normal file
18
05/musl-0.6.0/src/ipc/semctl.c
Normal file
|
@ -0,0 +1,18 @@
|
|||
#include <sys/sem.h>
|
||||
#include <stdarg.h>
|
||||
#include "syscall.h"
|
||||
#include "ipc.h"
|
||||
|
||||
int semctl(int id, int num, int cmd, ...)
|
||||
{
|
||||
long arg;
|
||||
va_list ap;
|
||||
va_start(ap, cmd);
|
||||
arg = va_arg(ap, long);
|
||||
va_end(ap);
|
||||
#ifdef __NR_semctl
|
||||
return syscall4(__NR_semctl, id, num, cmd, arg);
|
||||
#else
|
||||
return syscall5(__NR_ipc, IPCOP_semctl, id, num, cmd | 0x100, (long)&arg);
|
||||
#endif
|
||||
}
|
12
05/musl-0.6.0/src/ipc/semget.c
Normal file
12
05/musl-0.6.0/src/ipc/semget.c
Normal file
|
@ -0,0 +1,12 @@
|
|||
#include <sys/sem.h>
|
||||
#include "syscall.h"
|
||||
#include "ipc.h"
|
||||
|
||||
int semget(key_t key, int n, int fl)
|
||||
{
|
||||
#ifdef __NR_semget
|
||||
return syscall3(__NR_semget, key, n, fl);
|
||||
#else
|
||||
return syscall4(__NR_ipc, IPCOP_semget, key, n, fl);
|
||||
#endif
|
||||
}
|
12
05/musl-0.6.0/src/ipc/semop.c
Normal file
12
05/musl-0.6.0/src/ipc/semop.c
Normal file
|
@ -0,0 +1,12 @@
|
|||
#include <sys/sem.h>
|
||||
#include "syscall.h"
|
||||
#include "ipc.h"
|
||||
|
||||
int semop(int id, struct sembuf *buf, size_t n)
|
||||
{
|
||||
#ifdef __NR_semop
|
||||
return syscall3(__NR_semop, id, (long)buf, n);
|
||||
#else
|
||||
return syscall5(__NR_ipc, IPCOP_semop, id, n, 0, (long)buf);
|
||||
#endif
|
||||
}
|
17
05/musl-0.6.0/src/ipc/shmat.c
Normal file
17
05/musl-0.6.0/src/ipc/shmat.c
Normal file
|
@ -0,0 +1,17 @@
|
|||
#include <sys/shm.h>
|
||||
#include "syscall.h"
|
||||
#include "ipc.h"
|
||||
|
||||
#ifdef __NR_shmat
|
||||
void *shmat(int id, const void *addr, int flag)
|
||||
{
|
||||
return (void *)syscall3(__NR_shmat, id, (long)addr, flag);
|
||||
}
|
||||
#else
|
||||
void *shmat(int id, const void *addr, int flag)
|
||||
{
|
||||
unsigned long ret;
|
||||
ret = syscall5(__NR_ipc, IPCOP_shmat, id, flag, (long)&addr, (long)addr);
|
||||
return (ret > -(unsigned long)SHMLBA) ? (void *)ret : (void *)addr;
|
||||
}
|
||||
#endif
|
12
05/musl-0.6.0/src/ipc/shmctl.c
Normal file
12
05/musl-0.6.0/src/ipc/shmctl.c
Normal file
|
@ -0,0 +1,12 @@
|
|||
#include <sys/shm.h>
|
||||
#include "syscall.h"
|
||||
#include "ipc.h"
|
||||
|
||||
int shmctl(int id, int cmd, struct shmid_ds *buf)
|
||||
{
|
||||
#ifdef __NR_shmctl
|
||||
return syscall3(__NR_shmctl, id, cmd, (long)buf);
|
||||
#else
|
||||
return syscall4(__NR_ipc, IPCOP_shmctl, id, cmd | IPC_MODERN, (long)buf);
|
||||
#endif
|
||||
}
|
12
05/musl-0.6.0/src/ipc/shmdt.c
Normal file
12
05/musl-0.6.0/src/ipc/shmdt.c
Normal file
|
@ -0,0 +1,12 @@
|
|||
#include <sys/shm.h>
|
||||
#include "syscall.h"
|
||||
#include "ipc.h"
|
||||
|
||||
int shmdt(const void *addr)
|
||||
{
|
||||
#ifdef __NR_shmdt
|
||||
return syscall1(__NR_shmdt, (long)addr);
|
||||
#else
|
||||
return syscall2(__NR_ipc, IPCOP_shmdt, (long)addr);
|
||||
#endif
|
||||
}
|
12
05/musl-0.6.0/src/ipc/shmget.c
Normal file
12
05/musl-0.6.0/src/ipc/shmget.c
Normal file
|
@ -0,0 +1,12 @@
|
|||
#include <sys/shm.h>
|
||||
#include "syscall.h"
|
||||
#include "ipc.h"
|
||||
|
||||
int shmget(key_t key, size_t size, int flag)
|
||||
{
|
||||
#ifdef __NR_shmget
|
||||
return syscall3(__NR_shmget, key, size, flag);
|
||||
#else
|
||||
return syscall4(__NR_ipc, IPCOP_shmget, key, size, flag);
|
||||
#endif
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue