add linux_emul base, reorganize docs
[openbsd_emul.git] / linux_emul_base / linux.h
1 enum {
2 O_ACCMODE = 0003,
3 O_RDONLY = 00,
4 O_WRONLY = 01,
5 O_RDWR = 02,
6 O_CREAT = 0100,
7 O_EXCL = 0200,
8 O_NOCTTY = 0400,
9 O_TRUNC = 01000,
10 O_APPEND = 02000,
11 O_NONBLOCK = 04000,
12 O_NDELAY = 04000,
13 O_SYNC = 010000,
14 FASYNC = 020000,
15 };
16
17 enum {
18 FD_CLOEXEC = 1,
19 };
20
21 enum {
22 F_DUPFD = 0,
23 F_GETFD,
24 F_SETFD,
25 F_GETFL,
26 F_SETFL,
27 F_GETLK,
28 F_SETLK,
29 F_SETLKW,
30 F_SETOWN,
31 F_GETOWN,
32 F_GETSIG,
33 F_GETLK64 = 12,
34 F_SETLK64 = 13,
35 };
36
37 enum {
38 S_IFMT = 0170000,
39 S_IFSOCK = 0140000,
40 S_IFLNK = 0120000,
41 S_IFREG = 0100000,
42 S_IFBLK = 0060000,
43 S_IFDIR = 0040000,
44 S_IFCHR = 0020000,
45 S_IFIFO = 0010000,
46 S_ISUID = 0004000,
47 S_ISGID = 0002000,
48 S_ISVTX = 0001000,
49 };
50
51 enum {
52 PROT_READ = 0x01,
53 PROT_WRITE = 0x02,
54 PROT_EXEC = 0x04,
55 PROT_SEM = 0x08,
56 PROT_NONE = 0x00,
57 PROT_GROWSDOWN = 0x01000000,
58 PROT_GROWSUP = 0x02000000,
59 MAP_SHARED = 0x01,
60 MAP_PRIVATE = 0x02,
61 MAP_TYPE = 0x0f,
62 MAP_FIXED = 0x10,
63 MAP_ANONYMOUS = 0x20,
64
65 MREMAP_MAYMOVE = 1,
66 MREMAP_FIXED = 2,
67 };
68
69 enum {
70 CLONE_VM = 0x00000100,
71 CLONE_FS = 0x00000200,
72 CLONE_FILES = 0x00000400,
73 CLONE_SIGHAND = 0x00000800,
74 CLONE_PTRACE = 0x00002000,
75 CLONE_VFORK = 0x00004000,
76 CLONE_PARENT = 0x00008000,
77 CLONE_THREAD = 0x00010000,
78 CLONE_NEWNS = 0x00020000,
79 CLONE_SYSVSEM = 0x00040000,
80 CLONE_SETTLS = 0x00080000,
81 CLONE_PARENT_SETTID = 0x00100000,
82 CLONE_CHILD_CLEARTID = 0x00200000,
83 CLONE_DETACHED = 0x00400000,
84 CLONE_UNTRACED = 0x00800000,
85 CLONE_CHILD_SETTID = 0x01000000,
86 CLONE_STOPPED = 0x02000000,
87 };
88
89 enum {
90 EPERM = 1,
91 ENOENT = 2,
92 ESRCH = 3,
93 EINTR = 4,
94 EIO = 5,
95 ENXIO = 6,
96 E2BIG = 7,
97 ENOEXEC = 8,
98 EBADF = 9,
99 ECHILD = 10,
100 EAGAIN = 11,
101 ENOMEM = 12,
102 EACCES = 13,
103 EFAULT = 14,
104 ENOTBLK = 15,
105 EBUSY = 16,
106 EEXIST = 17,
107 EXDEV = 18,
108 ENODEV = 19,
109 ENOTDIR = 20,
110 EISDIR = 21,
111 EINVAL = 22,
112 ENFILE = 23,
113 EMFILE = 24,
114 ENOTTY = 25,
115 ETXTBSY = 26,
116 EFBIG = 27,
117 ENOSPC = 28,
118 ESPIPE = 29,
119 EROFS = 30,
120 EMLINK = 31,
121 EPIPE = 32,
122 EDOM = 33,
123 ERANGE = 34,
124 EDEADLK = 35,
125 ENAMETOOLONG = 36,
126 ENOLCK = 37,
127 ENOSYS = 38,
128 ENOTEMPTY = 39,
129 ELOOP = 40,
130 ENOMSG = 42,
131 EIDRM = 43,
132 ECHRNG = 44,
133 EL2NSYNC = 45,
134 EL3HLT = 46,
135 EL3RST = 47,
136 ELNRNG = 48,
137 EUNATCH = 49,
138 ENOCSI = 50,
139 EL2HLT = 51,
140 EBADE = 52,
141 EBADR = 53,
142 EXFULL = 54,
143 ENOANO = 55,
144 EBADRQC = 56,
145 EBADSLT = 57,
146 EBFONT = 59,
147 ENOSTR = 60,
148 ENODATA = 61,
149 ETIME = 62,
150 ENOSR = 63,
151 ENONET = 64,
152 ENOPKG = 65,
153 EREMOTE = 66,
154 ENOLINK = 67,
155 EADV = 68,
156 ESRMNT = 69,
157 ECOMM = 70,
158 EPROTO = 71,
159 EMULTIHOP = 72,
160 EDOTDOT = 73,
161 EBADMSG = 74,
162 EOVERFLOW = 75,
163 ENOTUNIQ = 76,
164 EBADFD = 77,
165 EREMCHG = 78,
166 ELIBACC = 79,
167 ELIBBAD = 80,
168 ELIBSCN = 81,
169 ELIBMAX = 82,
170 ELIBEXEC = 83,
171 EILSEQ = 84,
172 ERESTART = 85,
173 ESTRPIPE = 86,
174 EUSERS = 87,
175 ENOTSOCK = 88,
176 EDESTADDRREQ = 89,
177 EMSGSIZE = 90,
178 EPROTOTYPE = 91,
179 ENOPROTOOPT = 92,
180 EPROTONOSUPPORT = 93,
181 ESOCKTNOSUPPORT = 94,
182 EOPNOTSUPP = 95,
183 EPFNOSUPPORT = 96,
184 EAFNOSUPPORT = 97,
185 EADDRINUSE = 98,
186 EADDRNOTAVAIL = 99,
187 ENETDOWN = 100,
188 ENETUNREACH = 101,
189 ENETRESET = 102,
190 ECONNABORTED = 103,
191 ECONNRESET = 104,
192 ENOBUFS = 105,
193 EISCONN = 106,
194 ENOTCONN = 107,
195 ESHUTDOWN = 108,
196 ETOOMANYREFS = 109,
197 ETIMEDOUT = 110,
198 ECONNREFUSED = 111,
199 EHOSTDOWN = 112,
200 EHOSTUNREACH = 113,
201 EALREADY = 114,
202 EINPROGRESS = 115,
203 ESTALE = 116,
204 EUCLEAN = 117,
205 ENOTNAM = 118,
206 ENAVAIL = 119,
207 EISNAM = 120,
208 EREMOTEIO = 121,
209 EDQUOT = 122,
210 ENOMEDIUM = 123,
211 EMEDIUMTYPE = 124,
212 EMAX = 125,
213 };
214
215 #define EWOULDBLOCK EAGAIN
216 #define EDEADLOCK EDEADLK
217 #define ENOATTR ENODATA
218
219 enum {
220 POLLIN = (1<<0),
221 POLLPRI = (1<<1),
222 POLLOUT = (1<<2),
223 POLLERR = (1<<3),
224 POLLHUP = (1<<4),
225 POLLNVAL = (1<<5),
226 POLLRDNORM = (1<<6),
227 POLLRDBAND = (1<<7),
228 POLLWRNORM = (1<<8),
229 POLLWRBAND = (1<<9),
230 POLLMSG = (1<<10),
231 POLLREMOVE = (1<<11),
232 POLLRDHUP = 0x2000,
233 EPOLLONESHOT = (1<<30),
234 EPOLLET = (1<<31),
235 };
236
237 enum {
238 SIGHUP = 1,
239 SIGINT = 2,
240 SIGQUIT = 3,
241 SIGILL = 4,
242 SIGTRAP = 5,
243 SIGABRT = 6,
244 SIGIOT = 6,
245 SIGBUS = 7,
246 SIGFPE = 8,
247 SIGKILL = 9,
248 SIGUSR1 = 10,
249 SIGSEGV = 11,
250 SIGUSR2 = 12,
251 SIGPIPE = 13,
252 SIGALRM = 14,
253 SIGTERM = 15,
254 SIGSTKFLT = 16,
255 SIGCHLD = 17,
256 SIGCONT = 18,
257 SIGSTOP = 19,
258 SIGTSTP = 20,
259 SIGTTIN = 21,
260 SIGTTOU = 22,
261 SIGURG = 23,
262 SIGXCPU = 24,
263 SIGXFSZ = 25,
264 SIGVTALRM = 26,
265 SIGPROF = 27,
266 SIGWINCH = 28,
267 SIGIO = 29,
268 SIGPOLL = 29,
269 SIGLOST = 29,
270 SIGPWR = 30,
271 SIGSYS = 31,
272
273 SIGRT1 = 32,
274 SIGRT2 = 33,
275 SIGRT3 = 34,
276 SIGRT4 = 35,
277 SIGRT5 = 36,
278 SIGRT6 = 37,
279 SIGRT7 = 38,
280 SIGRT8 = 39,
281
282 SIGMAX = 40,
283 };
284
285 enum {
286 SI_USER = 0,
287 SI_QUEUE = -1,
288 SI_TIMER = -2,
289 SI_MESGQ = -3,
290 SI_ASYNCIO = -4,
291 SI_SIGIO = -5,
292 SI_TKILL = -6,
293 SI_DETHREAD = -7,
294 };
295
296 enum {
297 ILL_ILLOPC = 1,
298 ILL_ILLOPN,
299 ILL_ILLADR,
300 ILL_ILLTRP,
301 ILL_PROVOPC,
302 ILL_PRVREG,
303 ILL_COPROC,
304 ILL_BADSTK,
305 };
306
307 enum {
308 FPE_INTDIV = 1,
309 FPE_INTOVF,
310 FPE_FLTDIV,
311 FPE_FLTOVF,
312 FPE_FLTUND,
313 FPE_FLTRES,
314 FPE_FLTINV,
315 FPE_FLTSUB,
316 };
317
318 enum {
319 WNOHANG =0x00000001,
320 WUNTRACED =0x00000002,
321 WSTOPPED =0x00000002,
322 WEXITED =0x00000004,
323 WCONTINUED =0x00000008,
324 WNOWAIT =0x01000000,
325 WNOTHREAD =0x20000000,
326 WALL =0x40000000,
327 WCLONE =0x80000000,
328 };
329
330 struct linux_timeval
331 {
332 long tv_sec;
333 long tv_usec;
334 };
335
336 struct linux_timespec
337 {
338 long tv_sec;
339 long tv_nsec;
340 };
341
342 struct linux_user_desc {
343 uint entry_number;
344 ulong base_addr;
345 uint limit;
346 uint seg_32bit:1;
347 int contents:2;
348 uint read_exec_only:1;
349 uint limit_in_pages:1;
350 uint seg_not_present:1;
351 uint useable:1;
352 };