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