1*49cdfc7eSAndroid Build Coastguard Worker // SPDX-License-Identifier: GPL-2.0-or-later 2*49cdfc7eSAndroid Build Coastguard Worker /* 3*49cdfc7eSAndroid Build Coastguard Worker * Copyright (c) 2020 Linaro Limited. All rights reserved. 4*49cdfc7eSAndroid Build Coastguard Worker * Author: Viresh Kumar <[email protected]> 5*49cdfc7eSAndroid Build Coastguard Worker */ 6*49cdfc7eSAndroid Build Coastguard Worker 7*49cdfc7eSAndroid Build Coastguard Worker #ifndef LAPI_SHMBUF_H__ 8*49cdfc7eSAndroid Build Coastguard Worker #define LAPI_SHMBUF_H__ 9*49cdfc7eSAndroid Build Coastguard Worker 10*49cdfc7eSAndroid Build Coastguard Worker #include "lapi/posix_types.h" 11*49cdfc7eSAndroid Build Coastguard Worker #include <sys/sem.h> 12*49cdfc7eSAndroid Build Coastguard Worker #include "tst_timer.h" 13*49cdfc7eSAndroid Build Coastguard Worker #include "ipcbuf.h" 14*49cdfc7eSAndroid Build Coastguard Worker 15*49cdfc7eSAndroid Build Coastguard Worker #ifndef HAVE_STRUCT_SHMID64_DS 16*49cdfc7eSAndroid Build Coastguard Worker 17*49cdfc7eSAndroid Build Coastguard Worker #if defined(__mips__) 18*49cdfc7eSAndroid Build Coastguard Worker #define HAVE_SHMID64_DS 19*49cdfc7eSAndroid Build Coastguard Worker /* 20*49cdfc7eSAndroid Build Coastguard Worker * The shmid64_ds structure for the MIPS architecture. 21*49cdfc7eSAndroid Build Coastguard Worker * Note extra padding because this structure is passed back and forth 22*49cdfc7eSAndroid Build Coastguard Worker * between kernel and user space. 23*49cdfc7eSAndroid Build Coastguard Worker * 24*49cdfc7eSAndroid Build Coastguard Worker * As MIPS was lacking proper padding after shm_?time, we use 48 bits 25*49cdfc7eSAndroid Build Coastguard Worker * of the padding at the end to store a few additional bits of the time. 26*49cdfc7eSAndroid Build Coastguard Worker * libc implementations need to take care to convert this into a proper 27*49cdfc7eSAndroid Build Coastguard Worker * data structure when moving to 64-bit time_t. 28*49cdfc7eSAndroid Build Coastguard Worker */ 29*49cdfc7eSAndroid Build Coastguard Worker 30*49cdfc7eSAndroid Build Coastguard Worker #if __BITS_PER_LONG == 64 31*49cdfc7eSAndroid Build Coastguard Worker struct shmid64_ds { 32*49cdfc7eSAndroid Build Coastguard Worker struct ipc64_perm shm_perm; /* operation perms */ 33*49cdfc7eSAndroid Build Coastguard Worker size_t shm_segsz; /* size of segment (bytes) */ 34*49cdfc7eSAndroid Build Coastguard Worker long shm_atime; /* last attach time */ 35*49cdfc7eSAndroid Build Coastguard Worker long shm_dtime; /* last detach time */ 36*49cdfc7eSAndroid Build Coastguard Worker long shm_ctime; /* last change time */ 37*49cdfc7eSAndroid Build Coastguard Worker __kernel_pid_t shm_cpid; /* pid of creator */ 38*49cdfc7eSAndroid Build Coastguard Worker __kernel_pid_t shm_lpid; /* pid of last operator */ 39*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_nattch; /* no. of current attaches */ 40*49cdfc7eSAndroid Build Coastguard Worker unsigned long __unused1; 41*49cdfc7eSAndroid Build Coastguard Worker unsigned long __unused2; 42*49cdfc7eSAndroid Build Coastguard Worker }; 43*49cdfc7eSAndroid Build Coastguard Worker #else 44*49cdfc7eSAndroid Build Coastguard Worker #define HAVE_SHMID64_DS_TIME_HIGH 45*49cdfc7eSAndroid Build Coastguard Worker struct shmid64_ds { 46*49cdfc7eSAndroid Build Coastguard Worker struct ipc64_perm shm_perm; /* operation perms */ 47*49cdfc7eSAndroid Build Coastguard Worker size_t shm_segsz; /* size of segment (bytes) */ 48*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_atime; /* last attach time */ 49*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_dtime; /* last detach time */ 50*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_ctime; /* last change time */ 51*49cdfc7eSAndroid Build Coastguard Worker __kernel_pid_t shm_cpid; /* pid of creator */ 52*49cdfc7eSAndroid Build Coastguard Worker __kernel_pid_t shm_lpid; /* pid of last operator */ 53*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_nattch; /* no. of current attaches */ 54*49cdfc7eSAndroid Build Coastguard Worker unsigned short shm_atime_high; 55*49cdfc7eSAndroid Build Coastguard Worker unsigned short shm_dtime_high; 56*49cdfc7eSAndroid Build Coastguard Worker unsigned short shm_ctime_high; 57*49cdfc7eSAndroid Build Coastguard Worker unsigned short __unused1; 58*49cdfc7eSAndroid Build Coastguard Worker }; 59*49cdfc7eSAndroid Build Coastguard Worker #endif 60*49cdfc7eSAndroid Build Coastguard Worker 61*49cdfc7eSAndroid Build Coastguard Worker #endif /* __mips__ */ 62*49cdfc7eSAndroid Build Coastguard Worker 63*49cdfc7eSAndroid Build Coastguard Worker #if defined(__hppa__) 64*49cdfc7eSAndroid Build Coastguard Worker #define HAVE_SHMID64_DS 65*49cdfc7eSAndroid Build Coastguard Worker /* 66*49cdfc7eSAndroid Build Coastguard Worker * The shmid64_ds structure for parisc architecture. 67*49cdfc7eSAndroid Build Coastguard Worker * Note extra padding because this structure is passed back and forth 68*49cdfc7eSAndroid Build Coastguard Worker * between kernel and user space. 69*49cdfc7eSAndroid Build Coastguard Worker * 70*49cdfc7eSAndroid Build Coastguard Worker * Pad space is left for: 71*49cdfc7eSAndroid Build Coastguard Worker * - 2 miscellaneous 32-bit values 72*49cdfc7eSAndroid Build Coastguard Worker */ 73*49cdfc7eSAndroid Build Coastguard Worker 74*49cdfc7eSAndroid Build Coastguard Worker struct shmid64_ds { 75*49cdfc7eSAndroid Build Coastguard Worker struct ipc64_perm shm_perm; /* operation perms */ 76*49cdfc7eSAndroid Build Coastguard Worker #if __BITS_PER_LONG == 64 77*49cdfc7eSAndroid Build Coastguard Worker long shm_atime; /* last attach time */ 78*49cdfc7eSAndroid Build Coastguard Worker long shm_dtime; /* last detach time */ 79*49cdfc7eSAndroid Build Coastguard Worker long shm_ctime; /* last change time */ 80*49cdfc7eSAndroid Build Coastguard Worker #else 81*49cdfc7eSAndroid Build Coastguard Worker #define HAVE_SHMID64_DS_TIME_HIGH 82*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_atime_high; 83*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_atime; /* last attach time */ 84*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_dtime_high; 85*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_dtime; /* last detach time */ 86*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_ctime_high; 87*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_ctime; /* last change time */ 88*49cdfc7eSAndroid Build Coastguard Worker unsigned int __pad4; 89*49cdfc7eSAndroid Build Coastguard Worker #endif 90*49cdfc7eSAndroid Build Coastguard Worker __kernel_size_t shm_segsz; /* size of segment (bytes) */ 91*49cdfc7eSAndroid Build Coastguard Worker __kernel_pid_t shm_cpid; /* pid of creator */ 92*49cdfc7eSAndroid Build Coastguard Worker __kernel_pid_t shm_lpid; /* pid of last operator */ 93*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_nattch; /* no. of current attaches */ 94*49cdfc7eSAndroid Build Coastguard Worker unsigned long __unused1; 95*49cdfc7eSAndroid Build Coastguard Worker unsigned long __unused2; 96*49cdfc7eSAndroid Build Coastguard Worker }; 97*49cdfc7eSAndroid Build Coastguard Worker #endif /* __hppa__ */ 98*49cdfc7eSAndroid Build Coastguard Worker 99*49cdfc7eSAndroid Build Coastguard Worker #if defined(__powerpc__) || defined(__powerpc64__) 100*49cdfc7eSAndroid Build Coastguard Worker #define HAVE_SHMID64_DS 101*49cdfc7eSAndroid Build Coastguard Worker /* 102*49cdfc7eSAndroid Build Coastguard Worker * The shmid64_ds structure for PPC architecture. 103*49cdfc7eSAndroid Build Coastguard Worker * 104*49cdfc7eSAndroid Build Coastguard Worker * Note extra padding because this structure is passed back and forth 105*49cdfc7eSAndroid Build Coastguard Worker * between kernel and user space. 106*49cdfc7eSAndroid Build Coastguard Worker * 107*49cdfc7eSAndroid Build Coastguard Worker * Pad space is left for: 108*49cdfc7eSAndroid Build Coastguard Worker * - 2 miscellaneous 32-bit values 109*49cdfc7eSAndroid Build Coastguard Worker */ 110*49cdfc7eSAndroid Build Coastguard Worker 111*49cdfc7eSAndroid Build Coastguard Worker struct shmid64_ds { 112*49cdfc7eSAndroid Build Coastguard Worker struct ipc64_perm shm_perm; /* operation perms */ 113*49cdfc7eSAndroid Build Coastguard Worker #ifdef __powerpc64__ 114*49cdfc7eSAndroid Build Coastguard Worker long shm_atime; /* last attach time */ 115*49cdfc7eSAndroid Build Coastguard Worker long shm_dtime; /* last detach time */ 116*49cdfc7eSAndroid Build Coastguard Worker long shm_ctime; /* last change time */ 117*49cdfc7eSAndroid Build Coastguard Worker #else 118*49cdfc7eSAndroid Build Coastguard Worker #define HAVE_SHMID64_DS_TIME_HIGH 119*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_atime_high; 120*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_atime; /* last attach time */ 121*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_dtime_high; 122*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_dtime; /* last detach time */ 123*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_ctime_high; 124*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_ctime; /* last change time */ 125*49cdfc7eSAndroid Build Coastguard Worker unsigned long __unused4; 126*49cdfc7eSAndroid Build Coastguard Worker #endif 127*49cdfc7eSAndroid Build Coastguard Worker size_t shm_segsz; /* size of segment (bytes) */ 128*49cdfc7eSAndroid Build Coastguard Worker __kernel_pid_t shm_cpid; /* pid of creator */ 129*49cdfc7eSAndroid Build Coastguard Worker __kernel_pid_t shm_lpid; /* pid of last operator */ 130*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_nattch; /* no. of current attaches */ 131*49cdfc7eSAndroid Build Coastguard Worker unsigned long __unused5; 132*49cdfc7eSAndroid Build Coastguard Worker unsigned long __unused6; 133*49cdfc7eSAndroid Build Coastguard Worker }; 134*49cdfc7eSAndroid Build Coastguard Worker 135*49cdfc7eSAndroid Build Coastguard Worker #endif /* defined(__powerpc__) || defined(__powerpc64__) */ 136*49cdfc7eSAndroid Build Coastguard Worker 137*49cdfc7eSAndroid Build Coastguard Worker #if defined(__sparc__) 138*49cdfc7eSAndroid Build Coastguard Worker #define HAVE_SHMID64_DS 139*49cdfc7eSAndroid Build Coastguard Worker /* 140*49cdfc7eSAndroid Build Coastguard Worker * The shmid64_ds structure for sparc architecture. 141*49cdfc7eSAndroid Build Coastguard Worker * Note extra padding because this structure is passed back and forth 142*49cdfc7eSAndroid Build Coastguard Worker * between kernel and user space. 143*49cdfc7eSAndroid Build Coastguard Worker * 144*49cdfc7eSAndroid Build Coastguard Worker * Pad space is left for: 145*49cdfc7eSAndroid Build Coastguard Worker * - 2 miscellaneous 32-bit values 146*49cdfc7eSAndroid Build Coastguard Worker */ 147*49cdfc7eSAndroid Build Coastguard Worker 148*49cdfc7eSAndroid Build Coastguard Worker struct shmid64_ds { 149*49cdfc7eSAndroid Build Coastguard Worker struct ipc64_perm shm_perm; /* operation perms */ 150*49cdfc7eSAndroid Build Coastguard Worker #if defined(__arch64__) 151*49cdfc7eSAndroid Build Coastguard Worker long shm_atime; /* last attach time */ 152*49cdfc7eSAndroid Build Coastguard Worker long shm_dtime; /* last detach time */ 153*49cdfc7eSAndroid Build Coastguard Worker long shm_ctime; /* last change time */ 154*49cdfc7eSAndroid Build Coastguard Worker #else 155*49cdfc7eSAndroid Build Coastguard Worker #define HAVE_SHMID64_DS_TIME_HIGH 156*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_atime_high; 157*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_atime; /* last attach time */ 158*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_dtime_high; 159*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_dtime; /* last detach time */ 160*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_ctime_high; 161*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_ctime; /* last change time */ 162*49cdfc7eSAndroid Build Coastguard Worker #endif 163*49cdfc7eSAndroid Build Coastguard Worker size_t shm_segsz; /* size of segment (bytes) */ 164*49cdfc7eSAndroid Build Coastguard Worker __kernel_pid_t shm_cpid; /* pid of creator */ 165*49cdfc7eSAndroid Build Coastguard Worker __kernel_pid_t shm_lpid; /* pid of last operator */ 166*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_nattch; /* no. of current attaches */ 167*49cdfc7eSAndroid Build Coastguard Worker unsigned long __unused1; 168*49cdfc7eSAndroid Build Coastguard Worker unsigned long __unused2; 169*49cdfc7eSAndroid Build Coastguard Worker }; 170*49cdfc7eSAndroid Build Coastguard Worker 171*49cdfc7eSAndroid Build Coastguard Worker #endif /* __sparc__ */ 172*49cdfc7eSAndroid Build Coastguard Worker 173*49cdfc7eSAndroid Build Coastguard Worker #if defined(__x86_64__) && defined(__ILP32__) 174*49cdfc7eSAndroid Build Coastguard Worker #define HAVE_SHMID64_DS 175*49cdfc7eSAndroid Build Coastguard Worker /* 176*49cdfc7eSAndroid Build Coastguard Worker * The shmid64_ds structure for x86 architecture with x32 ABI. 177*49cdfc7eSAndroid Build Coastguard Worker * 178*49cdfc7eSAndroid Build Coastguard Worker * On x86-32 and x86-64 we can just use the generic definition, but 179*49cdfc7eSAndroid Build Coastguard Worker * x32 uses the same binary layout as x86_64, which is differnet 180*49cdfc7eSAndroid Build Coastguard Worker * from other 32-bit architectures. 181*49cdfc7eSAndroid Build Coastguard Worker */ 182*49cdfc7eSAndroid Build Coastguard Worker 183*49cdfc7eSAndroid Build Coastguard Worker struct shmid64_ds { 184*49cdfc7eSAndroid Build Coastguard Worker struct ipc64_perm shm_perm; /* operation perms */ 185*49cdfc7eSAndroid Build Coastguard Worker size_t shm_segsz; /* size of segment (bytes) */ 186*49cdfc7eSAndroid Build Coastguard Worker __kernel_long_t shm_atime; /* last attach time */ 187*49cdfc7eSAndroid Build Coastguard Worker __kernel_long_t shm_dtime; /* last detach time */ 188*49cdfc7eSAndroid Build Coastguard Worker __kernel_long_t shm_ctime; /* last change time */ 189*49cdfc7eSAndroid Build Coastguard Worker __kernel_pid_t shm_cpid; /* pid of creator */ 190*49cdfc7eSAndroid Build Coastguard Worker __kernel_pid_t shm_lpid; /* pid of last operator */ 191*49cdfc7eSAndroid Build Coastguard Worker __kernel_ulong_t shm_nattch; /* no. of current attaches */ 192*49cdfc7eSAndroid Build Coastguard Worker __kernel_ulong_t __unused4; 193*49cdfc7eSAndroid Build Coastguard Worker __kernel_ulong_t __unused5; 194*49cdfc7eSAndroid Build Coastguard Worker }; 195*49cdfc7eSAndroid Build Coastguard Worker #endif /* defined(__x86_64__) && defined(__ILP32__) */ 196*49cdfc7eSAndroid Build Coastguard Worker 197*49cdfc7eSAndroid Build Coastguard Worker #if defined(__xtensa__) 198*49cdfc7eSAndroid Build Coastguard Worker #define HAVE_SHMID64_DS 199*49cdfc7eSAndroid Build Coastguard Worker #define HAVE_SHMID64_DS_TIME_HIGH 200*49cdfc7eSAndroid Build Coastguard Worker /* 201*49cdfc7eSAndroid Build Coastguard Worker * The shmid64_ds structure for Xtensa architecture. 202*49cdfc7eSAndroid Build Coastguard Worker * Note extra padding because this structure is passed back and forth 203*49cdfc7eSAndroid Build Coastguard Worker * between kernel and user space, but the padding is on the wrong 204*49cdfc7eSAndroid Build Coastguard Worker * side for big-endian xtensa, for historic reasons. 205*49cdfc7eSAndroid Build Coastguard Worker * 206*49cdfc7eSAndroid Build Coastguard Worker * Pad space is left for: 207*49cdfc7eSAndroid Build Coastguard Worker * - 2 miscellaneous 32-bit values 208*49cdfc7eSAndroid Build Coastguard Worker */ 209*49cdfc7eSAndroid Build Coastguard Worker 210*49cdfc7eSAndroid Build Coastguard Worker struct shmid64_ds { 211*49cdfc7eSAndroid Build Coastguard Worker struct ipc64_perm shm_perm; /* operation perms */ 212*49cdfc7eSAndroid Build Coastguard Worker size_t shm_segsz; /* size of segment (bytes) */ 213*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_atime; /* last attach time */ 214*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_atime_high; 215*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_dtime; /* last detach time */ 216*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_dtime_high; 217*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_ctime; /* last change time */ 218*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_ctime_high; 219*49cdfc7eSAndroid Build Coastguard Worker __kernel_pid_t shm_cpid; /* pid of creator */ 220*49cdfc7eSAndroid Build Coastguard Worker __kernel_pid_t shm_lpid; /* pid of last operator */ 221*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_nattch; /* no. of current attaches */ 222*49cdfc7eSAndroid Build Coastguard Worker unsigned long __unused4; 223*49cdfc7eSAndroid Build Coastguard Worker unsigned long __unused5; 224*49cdfc7eSAndroid Build Coastguard Worker }; 225*49cdfc7eSAndroid Build Coastguard Worker 226*49cdfc7eSAndroid Build Coastguard Worker #endif /* __xtensa__ */ 227*49cdfc7eSAndroid Build Coastguard Worker 228*49cdfc7eSAndroid Build Coastguard Worker #ifndef HAVE_SHMID64_DS 229*49cdfc7eSAndroid Build Coastguard Worker /* 230*49cdfc7eSAndroid Build Coastguard Worker * The shmid64_ds structure for most architectures (though it came 231*49cdfc7eSAndroid Build Coastguard Worker * from x86_32 originally). Note extra padding because this structure 232*49cdfc7eSAndroid Build Coastguard Worker * is passed back and forth between kernel and user space. 233*49cdfc7eSAndroid Build Coastguard Worker * 234*49cdfc7eSAndroid Build Coastguard Worker * shmid64_ds was originally meant to be architecture specific, but 235*49cdfc7eSAndroid Build Coastguard Worker * everyone just ended up making identical copies without specific 236*49cdfc7eSAndroid Build Coastguard Worker * optimizations, so we may just as well all use the same one. 237*49cdfc7eSAndroid Build Coastguard Worker * 238*49cdfc7eSAndroid Build Coastguard Worker * 64 bit architectures use a 64-bit long time field here, while 239*49cdfc7eSAndroid Build Coastguard Worker * 32 bit architectures have a pair of unsigned long values. 240*49cdfc7eSAndroid Build Coastguard Worker * On big-endian systems, the lower half is in the wrong place. 241*49cdfc7eSAndroid Build Coastguard Worker * 242*49cdfc7eSAndroid Build Coastguard Worker * 243*49cdfc7eSAndroid Build Coastguard Worker * Pad space is left for: 244*49cdfc7eSAndroid Build Coastguard Worker * - 2 miscellaneous 32-bit values 245*49cdfc7eSAndroid Build Coastguard Worker */ 246*49cdfc7eSAndroid Build Coastguard Worker 247*49cdfc7eSAndroid Build Coastguard Worker struct shmid64_ds { 248*49cdfc7eSAndroid Build Coastguard Worker struct ipc64_perm shm_perm; /* operation perms */ 249*49cdfc7eSAndroid Build Coastguard Worker size_t shm_segsz; /* size of segment (bytes) */ 250*49cdfc7eSAndroid Build Coastguard Worker #if __BITS_PER_LONG == 64 251*49cdfc7eSAndroid Build Coastguard Worker long shm_atime; /* last attach time */ 252*49cdfc7eSAndroid Build Coastguard Worker long shm_dtime; /* last detach time */ 253*49cdfc7eSAndroid Build Coastguard Worker long shm_ctime; /* last change time */ 254*49cdfc7eSAndroid Build Coastguard Worker #else 255*49cdfc7eSAndroid Build Coastguard Worker #define HAVE_SHMID64_DS_TIME_HIGH 256*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_atime; /* last attach time */ 257*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_atime_high; 258*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_dtime; /* last detach time */ 259*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_dtime_high; 260*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_ctime; /* last change time */ 261*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_ctime_high; 262*49cdfc7eSAndroid Build Coastguard Worker #endif 263*49cdfc7eSAndroid Build Coastguard Worker __kernel_pid_t shm_cpid; /* pid of creator */ 264*49cdfc7eSAndroid Build Coastguard Worker __kernel_pid_t shm_lpid; /* pid of last operator */ 265*49cdfc7eSAndroid Build Coastguard Worker unsigned long shm_nattch; /* no. of current attaches */ 266*49cdfc7eSAndroid Build Coastguard Worker unsigned long __unused4; 267*49cdfc7eSAndroid Build Coastguard Worker unsigned long __unused5; 268*49cdfc7eSAndroid Build Coastguard Worker }; 269*49cdfc7eSAndroid Build Coastguard Worker #endif /* shmid64_ds */ 270*49cdfc7eSAndroid Build Coastguard Worker 271*49cdfc7eSAndroid Build Coastguard Worker #endif /* HAVE_SHMID64_DS */ 272*49cdfc7eSAndroid Build Coastguard Worker 273*49cdfc7eSAndroid Build Coastguard Worker #endif /* LAPI_SHMBUF_H__ */ 274