18a1ab315SDavid Howells #ifndef __ASM_GENERIC_IPCBUF_H
28a1ab315SDavid Howells #define __ASM_GENERIC_IPCBUF_H
38a1ab315SDavid Howells 
48a1ab315SDavid Howells /*
58a1ab315SDavid Howells  * The generic ipc64_perm structure:
68a1ab315SDavid Howells  * Note extra padding because this structure is passed back and forth
78a1ab315SDavid Howells  * between kernel and user space.
88a1ab315SDavid Howells  *
98a1ab315SDavid Howells  * ipc64_perm was originally meant to be architecture specific, but
108a1ab315SDavid Howells  * everyone just ended up making identical copies without specific
118a1ab315SDavid Howells  * optimizations, so we may just as well all use the same one.
128a1ab315SDavid Howells  *
138a1ab315SDavid Howells  * Pad space is left for:
148a1ab315SDavid Howells  * - 32-bit mode_t on architectures that only had 16 bit
158a1ab315SDavid Howells  * - 32-bit seq
168a1ab315SDavid Howells  * - 2 miscellaneous 32-bit values
178a1ab315SDavid Howells  */
188a1ab315SDavid Howells 
198a1ab315SDavid Howells struct ipc64_perm {
208a1ab315SDavid Howells 	__kernel_key_t		key;
218a1ab315SDavid Howells 	__kernel_uid32_t	uid;
228a1ab315SDavid Howells 	__kernel_gid32_t	gid;
238a1ab315SDavid Howells 	__kernel_uid32_t	cuid;
248a1ab315SDavid Howells 	__kernel_gid32_t	cgid;
258a1ab315SDavid Howells 	__kernel_mode_t		mode;
268a1ab315SDavid Howells 				/* pad if mode_t is u16: */
278a1ab315SDavid Howells 	unsigned char		__pad1[4 - sizeof(__kernel_mode_t)];
288a1ab315SDavid Howells 	unsigned short		seq;
298a1ab315SDavid Howells 	unsigned short		__pad2;
30071ed245SH.J. Lu 	__kernel_ulong_t	__unused1;
31071ed245SH.J. Lu 	__kernel_ulong_t	__unused2;
328a1ab315SDavid Howells };
338a1ab315SDavid Howells 
348a1ab315SDavid Howells #endif /* __ASM_GENERIC_IPCBUF_H */
35