xref: /linux/include/uapi/asm-generic/shmbuf.h (revision c0c914eca7f251c70facc37dfebeaf176601918d)
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 	__kernel_ulong_t	shm_nattch;	/* no. of current attaches */
43 	__kernel_ulong_t	__unused4;
44 	__kernel_ulong_t	__unused5;
45 };
46 
47 struct shminfo64 {
48 	__kernel_ulong_t	shmmax;
49 	__kernel_ulong_t	shmmin;
50 	__kernel_ulong_t	shmmni;
51 	__kernel_ulong_t	shmseg;
52 	__kernel_ulong_t	shmall;
53 	__kernel_ulong_t	__unused1;
54 	__kernel_ulong_t	__unused2;
55 	__kernel_ulong_t	__unused3;
56 	__kernel_ulong_t	__unused4;
57 };
58 
59 #endif /* __ASM_GENERIC_SHMBUF_H */
60