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