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

📄 shm.h

📁 中科院徐志伟老师一书《操作系统 原理·技术与编程》的源代码和习题接
💻 H
字号:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <time.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/shm.h>

#define LOCK        lockshm(0,1)  /* Lock shared memory */
#define UNLOCK      lockshm(0,0)  /* Unlock shared memory */

#define WAIT       lockshm(1,1)  /* Wait for Notify */
#define NOTIFY     lockshm(1,0)  /* Notify player 1 */

#if defined(__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED)
  /* union semun is defined by including <sys/sem.h> */
#else
       /* according to X/OPEN we have to define it ourselves */
  union semun {
        int val;                    /* value for SETVAL */
        struct semid_ds *buf;       /* buffer for IPC_STAT, IPC_SET */
        unsigned short int *array;  /* array for GETALL, SETALL */
        struct seminfo *__buf;      /* buffer for IPC_INFO */
  };
#endif

struct S_MEM {
    int     semid;          /* Locking sem IPC ID */
    pid_t   worker[2];            /* Process ID of worker */
    char buf[256];
};

extern struct S_MEM *table;
extern int shmid;           /* Shared Memory IPC ID */
extern int semid;           /* Table locking semaphore */
extern char *shmp;          /* Pointer to shared memory */
extern int I;              /* 0=starter / 1=challenger */
extern int you;            /* 1=challenger / 0=starter */

extern void release(void);
extern void lockshm(int sem,int bvar);

⌨️ 快捷键说明

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