1 #ifndef _PARISC_SHMBUF_H
2 #define _PARISC_SHMBUF_H
3 
4 /*
5  * The shmid64_ds structure for parisc architecture.
6  * Note extra padding because this structure is passed back and forth
7  * between kernel and user space.
8  *
9  * Pad space is left for:
10  * - 64-bit time_t to solve y2038 problem
11  * - 2 miscellaneous 32-bit values
12  */
13 
14 struct shmid64_ds {
15 	struct ipc64_perm	shm_perm;	/* operation perms */
16 #ifndef __LP64__
17 	unsigned int		__pad1;
18 #endif
19 	__kernel_time_t		shm_atime;	/* last attach time */
20 #ifndef __LP64__
21 	unsigned int		__pad2;
22 #endif
23 	__kernel_time_t		shm_dtime;	/* last detach time */
24 #ifndef __LP64__
25 	unsigned int		__pad3;
26 #endif
27 	__kernel_time_t		shm_ctime;	/* last change time */
28 #ifndef __LP64__
29 	unsigned int		__pad4;
30 #endif
31 	size_t			shm_segsz;	/* size of segment (bytes) */
32 	__kernel_pid_t		shm_cpid;	/* pid of creator */
33 	__kernel_pid_t		shm_lpid;	/* pid of last operator */
34 	unsigned int		shm_nattch;	/* no. of current attaches */
35 	unsigned int		__unused1;
36 	unsigned int		__unused2;
37 };
38 
39 #ifdef __LP64__
40 /* The 'unsigned int' (formerly 'unsigned long') data types below will
41  * ensure that a 32-bit app calling shmctl(*,IPC_INFO,*) will work on
42  * a wide kernel, but if some of these values are meant to contain pointers
43  * they may need to be 'long long' instead. -PB XXX FIXME
44  */
45 #endif
46 struct shminfo64 {
47 	unsigned int	shmmax;
48 	unsigned int	shmmin;
49 	unsigned int	shmmni;
50 	unsigned int	shmseg;
51 	unsigned int	shmall;
52 	unsigned int	__unused1;
53 	unsigned int	__unused2;
54 	unsigned int	__unused3;
55 	unsigned int	__unused4;
56 };
57 
58 #endif /* _PARISC_SHMBUF_H */
59