⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ipc.c

📁 俄罗斯高人Mamaich的Pocket gcc编译器(运行在PocketPC上)的全部源代码。
💻 C
字号:
/* 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	14static _syscall5(int,ipc,int,op,int,arg1,int,arg2,int,arg3,void *,arg4);intsemget (key_t key, int nsems, int semflgs){  return __libc_ipc(IPCOP_semget, (int)key, nsems, semflgs, NULL);}intsemctl (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);}intsemop (int semid, struct sembuf *sops, size_t nsems){  return __libc_ipc(IPCOP_semop, semid, (int)nsems, 0, sops);}intmsgget (key_t key, int msgflg){  return __libc_ipc(IPCOP_msgget, (int)key, msgflg, 0, NULL);}intmsgctl (int msqid, int cmd, struct msqid_ds *buf){  return __libc_ipc(IPCOP_msgctl, msqid, cmd | IPC_64, 0, buf);}intmsgsnd (int msqid, const void *msgp, size_t msgsz, int msgflg){  return __libc_ipc(IPCOP_msgsnd, msqid, (int)msgsz, msgflg, (void *)msgp);}intmsgrcv (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);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -