125981136fb13bcacf5f475f3e0ec750341e1e671Christopher Ferris/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#ifndef __ASM_GENERIC_IPCBUF_H
3224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define __ASM_GENERIC_IPCBUF_H
4224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
5224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
6224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * The generic ipc64_perm structure:
7224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Note extra padding because this structure is passed back and forth
8224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * between kernel and user space.
9224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *
10224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * ipc64_perm was originally meant to be architecture specific, but
11224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * everyone just ended up making identical copies without specific
12224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * optimizations, so we may just as well all use the same one.
13224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *
14224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Pad space is left for:
15224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * - 32-bit mode_t on architectures that only had 16 bit
16224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * - 32-bit seq
17224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * - 2 miscellaneous 32-bit values
18224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
19224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
20224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct ipc64_perm {
21224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__kernel_key_t		key;
22224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__kernel_uid32_t	uid;
23224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__kernel_gid32_t	gid;
24224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__kernel_uid32_t	cuid;
25224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__kernel_gid32_t	cgid;
26224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__kernel_mode_t		mode;
27224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng				/* pad if mode_t is u16: */
28224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	unsigned char		__pad1[4 - sizeof(__kernel_mode_t)];
29224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	unsigned short		seq;
30224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	unsigned short		__pad2;
31e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris	__kernel_ulong_t	__unused1;
32e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris	__kernel_ulong_t	__unused2;
33224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng};
34224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
35224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif /* __ASM_GENERIC_IPCBUF_H */
36