1 | /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ |
2 | #ifndef __ASM_GENERIC_IPCBUF_H |
3 | #define __ASM_GENERIC_IPCBUF_H |
4 | |
5 | #include <linux/posix_types.h> |
6 | |
7 | /* |
8 | * The generic ipc64_perm structure: |
9 | * Note extra padding because this structure is passed back and forth |
10 | * between kernel and user space. |
11 | * |
12 | * ipc64_perm 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 | * Pad space is left for: |
17 | * - 32-bit mode_t on architectures that only had 16 bit |
18 | * - 32-bit seq |
19 | * - 2 miscellaneous 32-bit values |
20 | */ |
21 | |
22 | struct ipc64_perm { |
23 | __kernel_key_t key; |
24 | __kernel_uid32_t uid; |
25 | __kernel_gid32_t gid; |
26 | __kernel_uid32_t cuid; |
27 | __kernel_gid32_t cgid; |
28 | __kernel_mode_t mode; |
29 | /* pad if mode_t is u16: */ |
30 | unsigned char __pad1[4 - sizeof(__kernel_mode_t)]; |
31 | unsigned short seq; |
32 | unsigned short __pad2; |
33 | __kernel_ulong_t __unused1; |
34 | __kernel_ulong_t __unused2; |
35 | }; |
36 | |
37 | #endif /* __ASM_GENERIC_IPCBUF_H */ |
38 | |