Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/compat/linux/linux_ipc64.h
39507 views
1
/*-
2
* Copyright (c) 2002 Maxim Sobolev <[email protected]>
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
7
* are met:
8
* 1. Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer
10
* in this position and unchanged.
11
* 2. Redistributions in binary form must reproduce the above copyright
12
* notice, this list of conditions and the following disclaimer in the
13
* documentation and/or other materials provided with the distribution.
14
* 3. The name of the author may not be used to endorse or promote products
15
* derived from this software without specific prior written permission
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
*/
28
29
#ifndef _LINUX_IPC64_H_
30
#define _LINUX_IPC64_H_
31
32
/*
33
* The generic ipc64_perm structure.
34
* Note extra padding because this structure is passed back and forth
35
* between kernel and user space.
36
*
37
* Pad space is left for:
38
* - 32-bit mode_t on architectures that only had 16 bit
39
* - 32-bit seq
40
* - 2 miscellaneous 32-bit values
41
*/
42
struct l_ipc64_perm
43
{
44
l_key_t key;
45
l_uid_t uid;
46
l_gid_t gid;
47
l_uid_t cuid;
48
l_gid_t cgid;
49
l_mode_t mode;
50
/* pad if mode_t is ushort: */
51
unsigned char __pad1[sizeof(l_int) - sizeof(l_mode_t)];
52
l_ushort seq;
53
l_ushort __pad2;
54
l_ulong __unused1;
55
l_ulong __unused2;
56
};
57
58
/*
59
* The generic msqid64_ds structure fro x86 architecture.
60
* Note extra padding because this structure is passed back and forth
61
* between kernel and user space.
62
*
63
* Pad space is left for:
64
* - 64-bit time_t to solve y2038 problem
65
* - 2 miscellaneous 32-bit values
66
*/
67
68
struct l_msqid64_ds {
69
struct l_ipc64_perm msg_perm;
70
l_time_t msg_stime; /* last msgsnd time */
71
#if !defined(__LP64__) || defined(COMPAT_LINUX32)
72
l_ulong __unused1;
73
#endif
74
l_time_t msg_rtime; /* last msgrcv time */
75
#if !defined(__LP64__) || defined(COMPAT_LINUX32)
76
l_ulong __unused2;
77
#endif
78
l_time_t msg_ctime; /* last change time */
79
#if !defined(__LP64__) || defined(COMPAT_LINUX32)
80
l_ulong __unused3;
81
#endif
82
l_ulong msg_cbytes; /* current number of bytes on queue */
83
l_ulong msg_qnum; /* number of messages in queue */
84
l_ulong msg_qbytes; /* max number of bytes on queue */
85
l_pid_t msg_lspid; /* pid of last msgsnd */
86
l_pid_t msg_lrpid; /* last receive pid */
87
l_ulong __unused4;
88
l_ulong __unused5;
89
};
90
91
/*
92
* The generic semid64_ds structure for x86 architecture.
93
* Note extra padding because this structure is passed back and forth
94
* between kernel and user space.
95
*
96
* Pad space is left for:
97
* - 64-bit time_t to solve y2038 problem
98
* - 2 miscellaneous 32-bit values
99
*/
100
101
struct l_semid64_ds {
102
struct l_ipc64_perm sem_perm; /* permissions */
103
l_time_t sem_otime; /* last semop time */
104
#if defined(__amd64__) || defined(__i386__)
105
l_ulong __unused1;
106
#endif
107
l_time_t sem_ctime; /* last change time */
108
#if defined(__amd64__) || defined(__i386__)
109
l_ulong __unused2;
110
#endif
111
l_ulong sem_nsems; /* no. of semaphores in array */
112
l_ulong __unused3;
113
l_ulong __unused4;
114
};
115
116
/*
117
* The generic shmid64_ds structure for x86 architecture.
118
* Note extra padding because this structure is passed back and forth
119
* between kernel and user space.
120
*
121
* Pad space is left for:
122
* - 64-bit time_t to solve y2038 problem
123
* - 2 miscellaneous 32-bit values
124
*/
125
126
struct l_shmid64_ds {
127
struct l_ipc64_perm shm_perm; /* operation perms */
128
l_size_t shm_segsz; /* size of segment (bytes) */
129
l_time_t shm_atime; /* last attach time */
130
#if !defined(__LP64__) || defined(COMPAT_LINUX32)
131
l_ulong __unused1;
132
#endif
133
l_time_t shm_dtime; /* last detach time */
134
#if !defined(__LP64__) || defined(COMPAT_LINUX32)
135
l_ulong __unused2;
136
#endif
137
l_time_t shm_ctime; /* last change time */
138
#if !defined(__LP64__) || defined(COMPAT_LINUX32)
139
l_ulong __unused3;
140
#endif
141
l_pid_t shm_cpid; /* pid of creator */
142
l_pid_t shm_lpid; /* pid of last operator */
143
l_ulong shm_nattch; /* no. of current attaches */
144
l_ulong __unused4;
145
l_ulong __unused5;
146
};
147
148
struct l_shminfo64 {
149
l_ulong shmmax;
150
l_ulong shmmin;
151
l_ulong shmmni;
152
l_ulong shmseg;
153
l_ulong shmall;
154
l_ulong __unused1;
155
l_ulong __unused2;
156
l_ulong __unused3;
157
l_ulong __unused4;
158
};
159
160
#endif /* !LINUX_IPC64_H_ */
161
162