1 #ifndef SYS_SHM_H 2 #define SYS_SHM_H 3 4 #define IPC_RMID 0x1 5 #define IPC_CREAT 0x2 6 #define IPC_PRIVATE 0x4 7 8 typedef int uid_t; 9 typedef int gid_t; 10 11 typedef int shmatt_t; 12 typedef int key_t; 13 14 struct ipc_perm 15 { 16 uid_t uid; /* owner's user ID */ 17 gid_t gid; /* owner's group ID */ 18 uid_t cuid; /* creator's user ID */ 19 gid_t cgid; /* creator's group ID */ 20 mode_t mode; /* read/write permission */ 21 }; 22 23 24 struct shmid_ds 25 { 26 struct ipc_perm shm_perm; /* operation permission structure */ 27 size_t shm_segsz; /* size of segment in bytes */ 28 pid_t shm_lpid; /* process ID of last shared memory operation */ 29 pid_t shm_cpid; /* process ID of creator */ 30 shmatt_t shm_nattch; /* number of current attaches */ 31 time_t shm_atime; /* time of last shmat() */ 32 time_t shm_dtime; /* time of last shmdt() */ 33 time_t shm_ctime; /* time of last change by shmctl() */ 34 }; 35 36 int shmctl(int shmid, int cmd, struct shmid_ds *buf); 37 int shmget(key_t key, size_t size, int shmflg); 38 void *shmat(int shmid, const void *shmaddr, int shmflg); 39 int shmdt(const void *shmaddr); 40 41 #endif /* SYS_SHM_H */ 42