xref: /aosp_15_r20/external/ltp/include/lapi/shmbuf.h (revision 49cdfc7efb34551c7342be41a7384b9c40d7cab7)
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