Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
shmbuf.h
Go to the documentation of this file.
1 #ifndef __ASM_GENERIC_SHMBUF_H
2 #define __ASM_GENERIC_SHMBUF_H
3 
4 #include <asm/bitsperlong.h>
5 
6 /*
7  * The shmid64_ds structure for x86 architecture.
8  * Note extra padding because this structure is passed back and forth
9  * between kernel and user space.
10  *
11  * shmid64_ds was originally meant to be architecture specific, but
12  * everyone just ended up making identical copies without specific
13  * optimizations, so we may just as well all use the same one.
14  *
15  * 64 bit architectures typically define a 64 bit __kernel_time_t,
16  * so they do not need the first two padding words.
17  * On big-endian systems, the padding is in the wrong place.
18  *
19  *
20  * Pad space is left for:
21  * - 64-bit time_t to solve y2038 problem
22  * - 2 miscellaneous 32-bit values
23  */
24 
25 struct shmid64_ds {
26  struct ipc64_perm shm_perm; /* operation perms */
27  size_t shm_segsz; /* size of segment (bytes) */
28  __kernel_time_t shm_atime; /* last attach time */
29 #if __BITS_PER_LONG != 64
30  unsigned long __unused1;
31 #endif
32  __kernel_time_t shm_dtime; /* last detach time */
33 #if __BITS_PER_LONG != 64
34  unsigned long __unused2;
35 #endif
36  __kernel_time_t shm_ctime; /* last change time */
37 #if __BITS_PER_LONG != 64
38  unsigned long __unused3;
39 #endif
40  __kernel_pid_t shm_cpid; /* pid of creator */
41  __kernel_pid_t shm_lpid; /* pid of last operator */
42  unsigned long shm_nattch; /* no. of current attaches */
43  unsigned long __unused4;
44  unsigned long __unused5;
45 };
46 
47 struct shminfo64 {
48  unsigned long shmmax;
49  unsigned long shmmin;
50  unsigned long shmmni;
51  unsigned long shmseg;
52  unsigned long shmall;
53  unsigned long __unused1;
54  unsigned long __unused2;
55  unsigned long __unused3;
56  unsigned long __unused4;
57 };
58 
59 #endif /* __ASM_GENERIC_SHMBUF_H */