1 #ifndef _LINUX_SHM_H_
2 #define _LINUX_SHM_H_
3 #include <linux/ipc.h>
4
5 struct shmid_ds {
6 struct ipc_perm shm_perm;
7 int shm_segsz;
8 time_t shm_atime;
9 time_t shm_dtime;
10 time_t shm_ctime;
11 unsigned short shm_cpid;
12 unsigned short shm_lpid;
13 short shm_nattch;
14
15 unsigned short shm_npages;
16 unsigned long *shm_pages;
17 struct shm_desc *attaches;
18 };
19
20
21 #define SHM_RDONLY 010000
22 #define SHM_RND 020000
23 #define SHM_REMAP 040000
24
25
26 #define SHM_LOCK 11
27 #define SHM_UNLOCK 12
28
29 struct shminfo {
30 int shmmax;
31 int shmmin;
32 int shmmni;
33 int shmseg;
34 int shmall;
35 };
36
37 #define SHMMAX 0x400000
38 #define SHMMIN 1
39 #define SHMMNI 128
40 #define SHMALL 0x10000
41 #define SHMLBA 0x1000
42 #define SHMSEG SHMMNI
43
44
45 #ifdef __KERNEL__
46
47
48 #define SHM_DEST 01000
49 #define SHM_LOCKED 02000
50
51
52 #define SHM_STAT 13
53 #define SHM_INFO 14
54 struct shm_info {
55 int used_ids;
56 ulong shm_tot;
57 ulong shm_rss;
58 ulong shm_swp;
59 ulong swap_attempts;
60 ulong swap_successes;
61 };
62
63
64
65
66
67
68 struct shm_desc {
69 struct task_struct *task;
70 unsigned long shm_sgn;
71 unsigned long start;
72 unsigned long end;
73 struct shm_desc *task_next;
74 struct shm_desc *seg_next;
75 };
76
77
78 #define SHM_IDX_SHIFT 20
79 #define SHM_IDX_MASK 0x3FF
80 #define SHM_ID_SHIFT 8
81 #define SHM_ID_MASK 0xFFF
82 #define SHM_READ_ONLY 0x80000000
83
84 #endif
85
86 #endif
87
88