summaryrefslogtreecommitdiff
path: root/os/windows/posix/include/sys/shm.h
blob: 6ed59577392d5b94398984feb7f578eea3380ed1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#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 */