1// Copyright (c) 2016 Nuxi (https://nuxi.nl/) and contributors.
2//
3// Redistribution and use in source and binary forms, with or without
4// modification, are permitted provided that the following conditions
5// are met:
6// 1. Redistributions of source code must retain the above copyright
7//    notice, this list of conditions and the following disclaimer.
8// 2. Redistributions in binary form must reproduce the above copyright
9//    notice, this list of conditions and the following disclaimer in the
10//    documentation and/or other materials provided with the distribution.
11//
12// THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
13// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
14// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
15// ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
16// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
18// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
20// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
21// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
22// SUCH DAMAGE.
23//
24// This file is automatically generated. Do not edit.
25//
26// Source: https://github.com/NuxiNL/cloudabi
27
28#ifndef CLOUDABI_TYPES_COMMON_H
29#define CLOUDABI_TYPES_COMMON_H
30
31#if defined(__FreeBSD__) && defined(_KERNEL)
32#include <sys/types.h>
33#elif defined(__linux__) && defined(__KERNEL__)
34#include <linux/types.h>
35#else
36#include <stddef.h>
37#include <stdint.h>
38#endif
39
40typedef uint8_t cloudabi_advice_t;
41#define CLOUDABI_ADVICE_DONTNEED   1
42#define CLOUDABI_ADVICE_NOREUSE    2
43#define CLOUDABI_ADVICE_NORMAL     3
44#define CLOUDABI_ADVICE_RANDOM     4
45#define CLOUDABI_ADVICE_SEQUENTIAL 5
46#define CLOUDABI_ADVICE_WILLNEED   6
47
48typedef uint32_t cloudabi_auxtype_t;
49#define CLOUDABI_AT_ARGDATA      256
50#define CLOUDABI_AT_ARGDATALEN   257
51#define CLOUDABI_AT_BASE           7
52#define CLOUDABI_AT_CANARY       258
53#define CLOUDABI_AT_CANARYLEN    259
54#define CLOUDABI_AT_NCPUS        260
55#define CLOUDABI_AT_NULL           0
56#define CLOUDABI_AT_PAGESZ         6
57#define CLOUDABI_AT_PHDR           3
58#define CLOUDABI_AT_PHNUM          4
59#define CLOUDABI_AT_PID          263
60#define CLOUDABI_AT_SYSINFO_EHDR 262
61#define CLOUDABI_AT_TID          261
62
63typedef uint32_t cloudabi_clockid_t;
64#define CLOUDABI_CLOCK_MONOTONIC          1
65#define CLOUDABI_CLOCK_PROCESS_CPUTIME_ID 2
66#define CLOUDABI_CLOCK_REALTIME           3
67#define CLOUDABI_CLOCK_THREAD_CPUTIME_ID  4
68
69typedef uint32_t cloudabi_condvar_t;
70#define CLOUDABI_CONDVAR_HAS_NO_WAITERS 0
71
72typedef uint64_t cloudabi_device_t;
73
74typedef uint64_t cloudabi_dircookie_t;
75#define CLOUDABI_DIRCOOKIE_START 0
76
77typedef uint16_t cloudabi_errno_t;
78#define CLOUDABI_E2BIG            1
79#define CLOUDABI_EACCES           2
80#define CLOUDABI_EADDRINUSE       3
81#define CLOUDABI_EADDRNOTAVAIL    4
82#define CLOUDABI_EAFNOSUPPORT     5
83#define CLOUDABI_EAGAIN           6
84#define CLOUDABI_EALREADY         7
85#define CLOUDABI_EBADF            8
86#define CLOUDABI_EBADMSG          9
87#define CLOUDABI_EBUSY           10
88#define CLOUDABI_ECANCELED       11
89#define CLOUDABI_ECHILD          12
90#define CLOUDABI_ECONNABORTED    13
91#define CLOUDABI_ECONNREFUSED    14
92#define CLOUDABI_ECONNRESET      15
93#define CLOUDABI_EDEADLK         16
94#define CLOUDABI_EDESTADDRREQ    17
95#define CLOUDABI_EDOM            18
96#define CLOUDABI_EDQUOT          19
97#define CLOUDABI_EEXIST          20
98#define CLOUDABI_EFAULT          21
99#define CLOUDABI_EFBIG           22
100#define CLOUDABI_EHOSTUNREACH    23
101#define CLOUDABI_EIDRM           24
102#define CLOUDABI_EILSEQ          25
103#define CLOUDABI_EINPROGRESS     26
104#define CLOUDABI_EINTR           27
105#define CLOUDABI_EINVAL          28
106#define CLOUDABI_EIO             29
107#define CLOUDABI_EISCONN         30
108#define CLOUDABI_EISDIR          31
109#define CLOUDABI_ELOOP           32
110#define CLOUDABI_EMFILE          33
111#define CLOUDABI_EMLINK          34
112#define CLOUDABI_EMSGSIZE        35
113#define CLOUDABI_EMULTIHOP       36
114#define CLOUDABI_ENAMETOOLONG    37
115#define CLOUDABI_ENETDOWN        38
116#define CLOUDABI_ENETRESET       39
117#define CLOUDABI_ENETUNREACH     40
118#define CLOUDABI_ENFILE          41
119#define CLOUDABI_ENOBUFS         42
120#define CLOUDABI_ENODEV          43
121#define CLOUDABI_ENOENT          44
122#define CLOUDABI_ENOEXEC         45
123#define CLOUDABI_ENOLCK          46
124#define CLOUDABI_ENOLINK         47
125#define CLOUDABI_ENOMEM          48
126#define CLOUDABI_ENOMSG          49
127#define CLOUDABI_ENOPROTOOPT     50
128#define CLOUDABI_ENOSPC          51
129#define CLOUDABI_ENOSYS          52
130#define CLOUDABI_ENOTCONN        53
131#define CLOUDABI_ENOTDIR         54
132#define CLOUDABI_ENOTEMPTY       55
133#define CLOUDABI_ENOTRECOVERABLE 56
134#define CLOUDABI_ENOTSOCK        57
135#define CLOUDABI_ENOTSUP         58
136#define CLOUDABI_ENOTTY          59
137#define CLOUDABI_ENXIO           60
138#define CLOUDABI_EOVERFLOW       61
139#define CLOUDABI_EOWNERDEAD      62
140#define CLOUDABI_EPERM           63
141#define CLOUDABI_EPIPE           64
142#define CLOUDABI_EPROTO          65
143#define CLOUDABI_EPROTONOSUPPORT 66
144#define CLOUDABI_EPROTOTYPE      67
145#define CLOUDABI_ERANGE          68
146#define CLOUDABI_EROFS           69
147#define CLOUDABI_ESPIPE          70
148#define CLOUDABI_ESRCH           71
149#define CLOUDABI_ESTALE          72
150#define CLOUDABI_ETIMEDOUT       73
151#define CLOUDABI_ETXTBSY         74
152#define CLOUDABI_EXDEV           75
153#define CLOUDABI_ENOTCAPABLE     76
154
155typedef uint16_t cloudabi_eventrwflags_t;
156#define CLOUDABI_EVENT_FD_READWRITE_HANGUP 0x0001
157
158typedef uint8_t cloudabi_eventtype_t;
159#define CLOUDABI_EVENTTYPE_CLOCK          1
160#define CLOUDABI_EVENTTYPE_CONDVAR        2
161#define CLOUDABI_EVENTTYPE_FD_READ        3
162#define CLOUDABI_EVENTTYPE_FD_WRITE       4
163#define CLOUDABI_EVENTTYPE_LOCK_RDLOCK    5
164#define CLOUDABI_EVENTTYPE_LOCK_WRLOCK    6
165#define CLOUDABI_EVENTTYPE_PROC_TERMINATE 7
166
167typedef uint32_t cloudabi_exitcode_t;
168
169typedef uint32_t cloudabi_fd_t;
170#define CLOUDABI_PROCESS_CHILD 0xffffffff
171#define CLOUDABI_MAP_ANON_FD   0xffffffff
172
173typedef uint16_t cloudabi_fdflags_t;
174#define CLOUDABI_FDFLAG_APPEND   0x0001
175#define CLOUDABI_FDFLAG_DSYNC    0x0002
176#define CLOUDABI_FDFLAG_NONBLOCK 0x0004
177#define CLOUDABI_FDFLAG_RSYNC    0x0008
178#define CLOUDABI_FDFLAG_SYNC     0x0010
179
180typedef uint16_t cloudabi_fdsflags_t;
181#define CLOUDABI_FDSTAT_FLAGS  0x0001
182#define CLOUDABI_FDSTAT_RIGHTS 0x0002
183
184typedef int64_t cloudabi_filedelta_t;
185
186typedef uint64_t cloudabi_filesize_t;
187
188typedef uint8_t cloudabi_filetype_t;
189#define CLOUDABI_FILETYPE_UNKNOWN            0
190#define CLOUDABI_FILETYPE_BLOCK_DEVICE      16
191#define CLOUDABI_FILETYPE_CHARACTER_DEVICE  17
192#define CLOUDABI_FILETYPE_DIRECTORY         32
193#define CLOUDABI_FILETYPE_PROCESS           80
194#define CLOUDABI_FILETYPE_REGULAR_FILE      96
195#define CLOUDABI_FILETYPE_SHARED_MEMORY    112
196#define CLOUDABI_FILETYPE_SOCKET_DGRAM     128
197#define CLOUDABI_FILETYPE_SOCKET_STREAM    130
198#define CLOUDABI_FILETYPE_SYMBOLIC_LINK    144
199
200typedef uint16_t cloudabi_fsflags_t;
201#define CLOUDABI_FILESTAT_ATIM     0x0001
202#define CLOUDABI_FILESTAT_ATIM_NOW 0x0002
203#define CLOUDABI_FILESTAT_MTIM     0x0004
204#define CLOUDABI_FILESTAT_MTIM_NOW 0x0008
205#define CLOUDABI_FILESTAT_SIZE     0x0010
206
207typedef uint64_t cloudabi_inode_t;
208
209typedef uint32_t cloudabi_linkcount_t;
210
211typedef uint32_t cloudabi_lock_t;
212#define CLOUDABI_LOCK_UNLOCKED       0x00000000
213#define CLOUDABI_LOCK_WRLOCKED       0x40000000
214#define CLOUDABI_LOCK_KERNEL_MANAGED 0x80000000
215#define CLOUDABI_LOCK_BOGUS          0x80000000
216
217typedef uint32_t cloudabi_lookupflags_t;
218#define CLOUDABI_LOOKUP_SYMLINK_FOLLOW 0x00000001
219
220typedef uint8_t cloudabi_mflags_t;
221#define CLOUDABI_MAP_ANON    0x01
222#define CLOUDABI_MAP_FIXED   0x02
223#define CLOUDABI_MAP_PRIVATE 0x04
224#define CLOUDABI_MAP_SHARED  0x08
225
226typedef uint8_t cloudabi_mprot_t;
227#define CLOUDABI_PROT_EXEC  0x01
228#define CLOUDABI_PROT_WRITE 0x02
229#define CLOUDABI_PROT_READ  0x04
230
231typedef uint8_t cloudabi_msflags_t;
232#define CLOUDABI_MS_ASYNC      0x01
233#define CLOUDABI_MS_INVALIDATE 0x02
234#define CLOUDABI_MS_SYNC       0x04
235
236typedef uint32_t cloudabi_nthreads_t;
237
238typedef uint16_t cloudabi_oflags_t;
239#define CLOUDABI_O_CREAT     0x0001
240#define CLOUDABI_O_DIRECTORY 0x0002
241#define CLOUDABI_O_EXCL      0x0004
242#define CLOUDABI_O_TRUNC     0x0008
243
244typedef uint16_t cloudabi_riflags_t;
245#define CLOUDABI_SOCK_RECV_PEEK    0x0004
246#define CLOUDABI_SOCK_RECV_WAITALL 0x0010
247
248typedef uint64_t cloudabi_rights_t;
249#define CLOUDABI_RIGHT_FD_DATASYNC           0x0000000000000001
250#define CLOUDABI_RIGHT_FD_READ               0x0000000000000002
251#define CLOUDABI_RIGHT_FD_SEEK               0x0000000000000004
252#define CLOUDABI_RIGHT_FD_STAT_PUT_FLAGS     0x0000000000000008
253#define CLOUDABI_RIGHT_FD_SYNC               0x0000000000000010
254#define CLOUDABI_RIGHT_FD_TELL               0x0000000000000020
255#define CLOUDABI_RIGHT_FD_WRITE              0x0000000000000040
256#define CLOUDABI_RIGHT_FILE_ADVISE           0x0000000000000080
257#define CLOUDABI_RIGHT_FILE_ALLOCATE         0x0000000000000100
258#define CLOUDABI_RIGHT_FILE_CREATE_DIRECTORY 0x0000000000000200
259#define CLOUDABI_RIGHT_FILE_CREATE_FILE      0x0000000000000400
260#define CLOUDABI_RIGHT_FILE_LINK_SOURCE      0x0000000000001000
261#define CLOUDABI_RIGHT_FILE_LINK_TARGET      0x0000000000002000
262#define CLOUDABI_RIGHT_FILE_OPEN             0x0000000000004000
263#define CLOUDABI_RIGHT_FILE_READDIR          0x0000000000008000
264#define CLOUDABI_RIGHT_FILE_READLINK         0x0000000000010000
265#define CLOUDABI_RIGHT_FILE_RENAME_SOURCE    0x0000000000020000
266#define CLOUDABI_RIGHT_FILE_RENAME_TARGET    0x0000000000040000
267#define CLOUDABI_RIGHT_FILE_STAT_FGET        0x0000000000080000
268#define CLOUDABI_RIGHT_FILE_STAT_FPUT_SIZE   0x0000000000100000
269#define CLOUDABI_RIGHT_FILE_STAT_FPUT_TIMES  0x0000000000200000
270#define CLOUDABI_RIGHT_FILE_STAT_GET         0x0000000000400000
271#define CLOUDABI_RIGHT_FILE_STAT_PUT_TIMES   0x0000000000800000
272#define CLOUDABI_RIGHT_FILE_SYMLINK          0x0000000001000000
273#define CLOUDABI_RIGHT_FILE_UNLINK           0x0000000002000000
274#define CLOUDABI_RIGHT_MEM_MAP               0x0000000004000000
275#define CLOUDABI_RIGHT_MEM_MAP_EXEC          0x0000000008000000
276#define CLOUDABI_RIGHT_POLL_FD_READWRITE     0x0000000010000000
277#define CLOUDABI_RIGHT_POLL_PROC_TERMINATE   0x0000000040000000
278#define CLOUDABI_RIGHT_PROC_EXEC             0x0000000100000000
279#define CLOUDABI_RIGHT_SOCK_SHUTDOWN         0x0000008000000000
280
281typedef uint16_t cloudabi_roflags_t;
282#define CLOUDABI_SOCK_RECV_FDS_TRUNCATED  0x0001
283#define CLOUDABI_SOCK_RECV_DATA_TRUNCATED 0x0008
284
285typedef uint8_t cloudabi_scope_t;
286#define CLOUDABI_SCOPE_PRIVATE 4
287#define CLOUDABI_SCOPE_SHARED  8
288
289typedef uint8_t cloudabi_sdflags_t;
290#define CLOUDABI_SHUT_RD 0x01
291#define CLOUDABI_SHUT_WR 0x02
292
293typedef uint16_t cloudabi_siflags_t;
294
295typedef uint8_t cloudabi_signal_t;
296#define CLOUDABI_SIGABRT    1
297#define CLOUDABI_SIGALRM    2
298#define CLOUDABI_SIGBUS     3
299#define CLOUDABI_SIGCHLD    4
300#define CLOUDABI_SIGCONT    5
301#define CLOUDABI_SIGFPE     6
302#define CLOUDABI_SIGHUP     7
303#define CLOUDABI_SIGILL     8
304#define CLOUDABI_SIGINT     9
305#define CLOUDABI_SIGKILL   10
306#define CLOUDABI_SIGPIPE   11
307#define CLOUDABI_SIGQUIT   12
308#define CLOUDABI_SIGSEGV   13
309#define CLOUDABI_SIGSTOP   14
310#define CLOUDABI_SIGSYS    15
311#define CLOUDABI_SIGTERM   16
312#define CLOUDABI_SIGTRAP   17
313#define CLOUDABI_SIGTSTP   18
314#define CLOUDABI_SIGTTIN   19
315#define CLOUDABI_SIGTTOU   20
316#define CLOUDABI_SIGURG    21
317#define CLOUDABI_SIGUSR1   22
318#define CLOUDABI_SIGUSR2   23
319#define CLOUDABI_SIGVTALRM 24
320#define CLOUDABI_SIGXCPU   25
321#define CLOUDABI_SIGXFSZ   26
322
323typedef uint16_t cloudabi_subclockflags_t;
324#define CLOUDABI_SUBSCRIPTION_CLOCK_ABSTIME 0x0001
325
326typedef uint16_t cloudabi_subrwflags_t;
327#define CLOUDABI_SUBSCRIPTION_FD_READWRITE_POLL 0x0001
328
329typedef uint32_t cloudabi_tid_t;
330
331typedef uint64_t cloudabi_timestamp_t;
332
333typedef uint8_t cloudabi_ulflags_t;
334#define CLOUDABI_UNLINK_REMOVEDIR 0x01
335
336typedef uint64_t cloudabi_userdata_t;
337
338typedef uint8_t cloudabi_whence_t;
339#define CLOUDABI_WHENCE_CUR 1
340#define CLOUDABI_WHENCE_END 2
341#define CLOUDABI_WHENCE_SET 3
342
343typedef struct {
344  _Alignas(8) cloudabi_dircookie_t d_next;
345  _Alignas(8) cloudabi_inode_t d_ino;
346  _Alignas(4) uint32_t d_namlen;
347  _Alignas(1) cloudabi_filetype_t d_type;
348} cloudabi_dirent_t;
349_Static_assert(offsetof(cloudabi_dirent_t, d_next) == 0, "Incorrect layout");
350_Static_assert(offsetof(cloudabi_dirent_t, d_ino) == 8, "Incorrect layout");
351_Static_assert(offsetof(cloudabi_dirent_t, d_namlen) == 16, "Incorrect layout");
352_Static_assert(offsetof(cloudabi_dirent_t, d_type) == 20, "Incorrect layout");
353_Static_assert(sizeof(cloudabi_dirent_t) == 24, "Incorrect layout");
354_Static_assert(_Alignof(cloudabi_dirent_t) == 8, "Incorrect layout");
355
356typedef struct {
357  _Alignas(8) cloudabi_userdata_t userdata;
358  _Alignas(2) cloudabi_errno_t error;
359  _Alignas(1) cloudabi_eventtype_t type;
360  union {
361    struct {
362      _Alignas(8) cloudabi_filesize_t nbytes;
363      _Alignas(1) char unused[4];
364      _Alignas(2) cloudabi_eventrwflags_t flags;
365    } fd_readwrite;
366    struct {
367      _Alignas(1) char unused[4];
368      _Alignas(1) cloudabi_signal_t signal;
369      _Alignas(4) cloudabi_exitcode_t exitcode;
370    } proc_terminate;
371  };
372} cloudabi_event_t;
373_Static_assert(offsetof(cloudabi_event_t, userdata) == 0, "Incorrect layout");
374_Static_assert(offsetof(cloudabi_event_t, error) == 8, "Incorrect layout");
375_Static_assert(offsetof(cloudabi_event_t, type) == 10, "Incorrect layout");
376_Static_assert(offsetof(cloudabi_event_t, fd_readwrite.nbytes) == 16, "Incorrect layout");
377_Static_assert(offsetof(cloudabi_event_t, fd_readwrite.unused) == 24, "Incorrect layout");
378_Static_assert(offsetof(cloudabi_event_t, fd_readwrite.flags) == 28, "Incorrect layout");
379_Static_assert(offsetof(cloudabi_event_t, proc_terminate.unused) == 16, "Incorrect layout");
380_Static_assert(offsetof(cloudabi_event_t, proc_terminate.signal) == 20, "Incorrect layout");
381_Static_assert(offsetof(cloudabi_event_t, proc_terminate.exitcode) == 24, "Incorrect layout");
382_Static_assert(sizeof(cloudabi_event_t) == 32, "Incorrect layout");
383_Static_assert(_Alignof(cloudabi_event_t) == 8, "Incorrect layout");
384
385typedef struct {
386  _Alignas(1) cloudabi_filetype_t fs_filetype;
387  _Alignas(2) cloudabi_fdflags_t fs_flags;
388  _Alignas(8) cloudabi_rights_t fs_rights_base;
389  _Alignas(8) cloudabi_rights_t fs_rights_inheriting;
390} cloudabi_fdstat_t;
391_Static_assert(offsetof(cloudabi_fdstat_t, fs_filetype) == 0, "Incorrect layout");
392_Static_assert(offsetof(cloudabi_fdstat_t, fs_flags) == 2, "Incorrect layout");
393_Static_assert(offsetof(cloudabi_fdstat_t, fs_rights_base) == 8, "Incorrect layout");
394_Static_assert(offsetof(cloudabi_fdstat_t, fs_rights_inheriting) == 16, "Incorrect layout");
395_Static_assert(sizeof(cloudabi_fdstat_t) == 24, "Incorrect layout");
396_Static_assert(_Alignof(cloudabi_fdstat_t) == 8, "Incorrect layout");
397
398typedef struct {
399  _Alignas(8) cloudabi_device_t st_dev;
400  _Alignas(8) cloudabi_inode_t st_ino;
401  _Alignas(1) cloudabi_filetype_t st_filetype;
402  _Alignas(4) cloudabi_linkcount_t st_nlink;
403  _Alignas(8) cloudabi_filesize_t st_size;
404  _Alignas(8) cloudabi_timestamp_t st_atim;
405  _Alignas(8) cloudabi_timestamp_t st_mtim;
406  _Alignas(8) cloudabi_timestamp_t st_ctim;
407} cloudabi_filestat_t;
408_Static_assert(offsetof(cloudabi_filestat_t, st_dev) == 0, "Incorrect layout");
409_Static_assert(offsetof(cloudabi_filestat_t, st_ino) == 8, "Incorrect layout");
410_Static_assert(offsetof(cloudabi_filestat_t, st_filetype) == 16, "Incorrect layout");
411_Static_assert(offsetof(cloudabi_filestat_t, st_nlink) == 20, "Incorrect layout");
412_Static_assert(offsetof(cloudabi_filestat_t, st_size) == 24, "Incorrect layout");
413_Static_assert(offsetof(cloudabi_filestat_t, st_atim) == 32, "Incorrect layout");
414_Static_assert(offsetof(cloudabi_filestat_t, st_mtim) == 40, "Incorrect layout");
415_Static_assert(offsetof(cloudabi_filestat_t, st_ctim) == 48, "Incorrect layout");
416_Static_assert(sizeof(cloudabi_filestat_t) == 56, "Incorrect layout");
417_Static_assert(_Alignof(cloudabi_filestat_t) == 8, "Incorrect layout");
418
419typedef struct {
420  _Alignas(4) cloudabi_fd_t fd;
421  _Alignas(4) cloudabi_lookupflags_t flags;
422} cloudabi_lookup_t;
423_Static_assert(offsetof(cloudabi_lookup_t, fd) == 0, "Incorrect layout");
424_Static_assert(offsetof(cloudabi_lookup_t, flags) == 4, "Incorrect layout");
425_Static_assert(sizeof(cloudabi_lookup_t) == 8, "Incorrect layout");
426_Static_assert(_Alignof(cloudabi_lookup_t) == 4, "Incorrect layout");
427
428#endif
429