#ifndef SYS_SHM_H
#define SYS_SHM_H
#define IPC_RMID 0x1
#define IPC_CREAT 0x2
#define IPC_PRIVATE 0x4
typedef int uid_t;
typedef int gid_t;
typedef int shmatt_t;
typedef int key_t;
struct ipc_perm
{
uid_t uid; /* owner's user ID */
gid_t gid; /* owner's group ID */
uid_t cuid; /* creator's user ID */
gid_t cgid; /* creator's group ID */
mode_t mode; /* read/write permission */
};
struct shmid_ds
{
struct ipc_perm shm_perm; /* operation permission structure */
size_t shm_segsz; /* size of segment in bytes */
pid_t shm_lpid; /* process ID of last shared memory operation */
pid_t shm_cpid; /* process ID of creator */
shmatt_t shm_nattch; /* number of current attaches */
time_t shm_atime; /* time of last shmat() */
time_t shm_dtime; /* time of last shmdt() */
time_t shm_ctime; /* time of last change by shmctl() */
};
int shmctl(int shmid, int cmd, struct shmid_ds *buf);
int shmget(key_t key, size_t size, int shmflg);
void *shmat(int shmid, const void *shmaddr, int shmflg);
int shmdt(const void *shmaddr);
#endif /* SYS_SHM_H */