Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
[sfrench/cifs-2.6.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  * - 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 #if __BITS_PER_LONG == 64
29         __kernel_time_t         shm_atime;      /* last attach time */
30         __kernel_time_t         shm_dtime;      /* last detach time */
31         __kernel_time_t         shm_ctime;      /* last change time */
32 #else
33         unsigned long           shm_atime;      /* last attach time */
34         unsigned long           shm_atime_high;
35         unsigned long           shm_dtime;      /* last detach time */
36         unsigned long           shm_dtime_high;
37         unsigned long           shm_ctime;      /* last change time */
38         unsigned long           shm_ctime_high;
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 */