cloudabi_types_common.h revision 307144
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_SYSINFO_EHDR 262
60#define CLOUDABI_AT_TID 261
61
62typedef uint32_t cloudabi_backlog_t;
63
64typedef uint32_t cloudabi_clockid_t;
65#define CLOUDABI_CLOCK_MONOTONIC 1
66#define CLOUDABI_CLOCK_PROCESS_CPUTIME_ID 2
67#define CLOUDABI_CLOCK_REALTIME 3
68#define CLOUDABI_CLOCK_THREAD_CPUTIME_ID 4
69
70typedef uint32_t cloudabi_condvar_t;
71#define CLOUDABI_CONDVAR_HAS_NO_WAITERS 0
72
73typedef uint64_t cloudabi_device_t;
74
75typedef uint64_t cloudabi_dircookie_t;
76#define CLOUDABI_DIRCOOKIE_START 0
77
78typedef uint16_t cloudabi_errno_t;
79#define CLOUDABI_E2BIG 1
80#define CLOUDABI_EACCES 2
81#define CLOUDABI_EADDRINUSE 3
82#define CLOUDABI_EADDRNOTAVAIL 4
83#define CLOUDABI_EAFNOSUPPORT 5
84#define CLOUDABI_EAGAIN 6
85#define CLOUDABI_EALREADY 7
86#define CLOUDABI_EBADF 8
87#define CLOUDABI_EBADMSG 9
88#define CLOUDABI_EBUSY 10
89#define CLOUDABI_ECANCELED 11
90#define CLOUDABI_ECHILD 12
91#define CLOUDABI_ECONNABORTED 13
92#define CLOUDABI_ECONNREFUSED 14
93#define CLOUDABI_ECONNRESET 15
94#define CLOUDABI_EDEADLK 16
95#define CLOUDABI_EDESTADDRREQ 17
96#define CLOUDABI_EDOM 18
97#define CLOUDABI_EDQUOT 19
98#define CLOUDABI_EEXIST 20
99#define CLOUDABI_EFAULT 21
100#define CLOUDABI_EFBIG 22
101#define CLOUDABI_EHOSTUNREACH 23
102#define CLOUDABI_EIDRM 24
103#define CLOUDABI_EILSEQ 25
104#define CLOUDABI_EINPROGRESS 26
105#define CLOUDABI_EINTR 27
106#define CLOUDABI_EINVAL 28
107#define CLOUDABI_EIO 29
108#define CLOUDABI_EISCONN 30
109#define CLOUDABI_EISDIR 31
110#define CLOUDABI_ELOOP 32
111#define CLOUDABI_EMFILE 33
112#define CLOUDABI_EMLINK 34
113#define CLOUDABI_EMSGSIZE 35
114#define CLOUDABI_EMULTIHOP 36
115#define CLOUDABI_ENAMETOOLONG 37
116#define CLOUDABI_ENETDOWN 38
117#define CLOUDABI_ENETRESET 39
118#define CLOUDABI_ENETUNREACH 40
119#define CLOUDABI_ENFILE 41
120#define CLOUDABI_ENOBUFS 42
121#define CLOUDABI_ENODEV 43
122#define CLOUDABI_ENOENT 44
123#define CLOUDABI_ENOEXEC 45
124#define CLOUDABI_ENOLCK 46
125#define CLOUDABI_ENOLINK 47
126#define CLOUDABI_ENOMEM 48
127#define CLOUDABI_ENOMSG 49
128#define CLOUDABI_ENOPROTOOPT 50
129#define CLOUDABI_ENOSPC 51
130#define CLOUDABI_ENOSYS 52
131#define CLOUDABI_ENOTCONN 53
132#define CLOUDABI_ENOTDIR 54
133#define CLOUDABI_ENOTEMPTY 55
134#define CLOUDABI_ENOTRECOVERABLE 56
135#define CLOUDABI_ENOTSOCK 57
136#define CLOUDABI_ENOTSUP 58
137#define CLOUDABI_ENOTTY 59
138#define CLOUDABI_ENXIO 60
139#define CLOUDABI_EOVERFLOW 61
140#define CLOUDABI_EOWNERDEAD 62
141#define CLOUDABI_EPERM 63
142#define CLOUDABI_EPIPE 64
143#define CLOUDABI_EPROTO 65
144#define CLOUDABI_EPROTONOSUPPORT 66
145#define CLOUDABI_EPROTOTYPE 67
146#define CLOUDABI_ERANGE 68
147#define CLOUDABI_EROFS 69
148#define CLOUDABI_ESPIPE 70
149#define CLOUDABI_ESRCH 71
150#define CLOUDABI_ESTALE 72
151#define CLOUDABI_ETIMEDOUT 73
152#define CLOUDABI_ETXTBSY 74
153#define CLOUDABI_EXDEV 75
154#define CLOUDABI_ENOTCAPABLE 76
155
156typedef uint16_t cloudabi_eventrwflags_t;
157#define CLOUDABI_EVENT_FD_READWRITE_HANGUP 0x0001
158
159typedef uint8_t cloudabi_eventtype_t;
160#define CLOUDABI_EVENTTYPE_CLOCK 1
161#define CLOUDABI_EVENTTYPE_CONDVAR 2
162#define CLOUDABI_EVENTTYPE_FD_READ 3
163#define CLOUDABI_EVENTTYPE_FD_WRITE 4
164#define CLOUDABI_EVENTTYPE_LOCK_RDLOCK 5
165#define CLOUDABI_EVENTTYPE_LOCK_WRLOCK 6
166#define CLOUDABI_EVENTTYPE_PROC_TERMINATE 7
167
168typedef uint32_t cloudabi_exitcode_t;
169
170typedef uint32_t cloudabi_fd_t;
171#define CLOUDABI_PROCESS_CHILD 0xffffffff
172#define CLOUDABI_MAP_ANON_FD 0xffffffff
173
174typedef uint16_t cloudabi_fdflags_t;
175#define CLOUDABI_FDFLAG_APPEND 0x0001
176#define CLOUDABI_FDFLAG_DSYNC 0x0002
177#define CLOUDABI_FDFLAG_NONBLOCK 0x0004
178#define CLOUDABI_FDFLAG_RSYNC 0x0008
179#define CLOUDABI_FDFLAG_SYNC 0x0010
180
181typedef uint16_t cloudabi_fdsflags_t;
182#define CLOUDABI_FDSTAT_FLAGS 0x0001
183#define CLOUDABI_FDSTAT_RIGHTS 0x0002
184
185typedef int64_t cloudabi_filedelta_t;
186
187typedef uint64_t cloudabi_filesize_t;
188
189typedef uint8_t cloudabi_filetype_t;
190#define CLOUDABI_FILETYPE_UNKNOWN 0
191#define CLOUDABI_FILETYPE_BLOCK_DEVICE 16
192#define CLOUDABI_FILETYPE_CHARACTER_DEVICE 17
193#define CLOUDABI_FILETYPE_DIRECTORY 32
194#define CLOUDABI_FILETYPE_FIFO 48
195#define CLOUDABI_FILETYPE_POLL 64
196#define CLOUDABI_FILETYPE_PROCESS 80
197#define CLOUDABI_FILETYPE_REGULAR_FILE 96
198#define CLOUDABI_FILETYPE_SHARED_MEMORY 112
199#define CLOUDABI_FILETYPE_SOCKET_DGRAM 128
200#define CLOUDABI_FILETYPE_SOCKET_SEQPACKET 129
201#define CLOUDABI_FILETYPE_SOCKET_STREAM 130
202#define CLOUDABI_FILETYPE_SYMBOLIC_LINK 144
203
204typedef uint16_t cloudabi_fsflags_t;
205#define CLOUDABI_FILESTAT_ATIM 0x0001
206#define CLOUDABI_FILESTAT_ATIM_NOW 0x0002
207#define CLOUDABI_FILESTAT_MTIM 0x0004
208#define CLOUDABI_FILESTAT_MTIM_NOW 0x0008
209#define CLOUDABI_FILESTAT_SIZE 0x0010
210
211typedef uint64_t cloudabi_inode_t;
212
213typedef uint32_t cloudabi_linkcount_t;
214
215typedef uint32_t cloudabi_lock_t;
216#define CLOUDABI_LOCK_UNLOCKED 0x00000000
217#define CLOUDABI_LOCK_WRLOCKED 0x40000000
218#define CLOUDABI_LOCK_KERNEL_MANAGED 0x80000000
219#define CLOUDABI_LOCK_BOGUS 0x80000000
220
221typedef uint32_t cloudabi_lookupflags_t;
222#define CLOUDABI_LOOKUP_SYMLINK_FOLLOW 0x00000001
223
224typedef uint8_t cloudabi_mflags_t;
225#define CLOUDABI_MAP_ANON 0x01
226#define CLOUDABI_MAP_FIXED 0x02
227#define CLOUDABI_MAP_PRIVATE 0x04
228#define CLOUDABI_MAP_SHARED 0x08
229
230typedef uint8_t cloudabi_mprot_t;
231#define CLOUDABI_PROT_EXEC 0x01
232#define CLOUDABI_PROT_WRITE 0x02
233#define CLOUDABI_PROT_READ 0x04
234
235typedef uint8_t cloudabi_msflags_t;
236#define CLOUDABI_MS_ASYNC 0x01
237#define CLOUDABI_MS_INVALIDATE 0x02
238#define CLOUDABI_MS_SYNC 0x04
239
240typedef uint16_t cloudabi_msgflags_t;
241#define CLOUDABI_MSG_CTRUNC 0x0001
242#define CLOUDABI_MSG_EOR 0x0002
243#define CLOUDABI_MSG_PEEK 0x0004
244#define CLOUDABI_MSG_TRUNC 0x0008
245#define CLOUDABI_MSG_WAITALL 0x0010
246
247typedef uint32_t cloudabi_nthreads_t;
248
249typedef uint16_t cloudabi_oflags_t;
250#define CLOUDABI_O_CREAT 0x0001
251#define CLOUDABI_O_DIRECTORY 0x0002
252#define CLOUDABI_O_EXCL 0x0004
253#define CLOUDABI_O_TRUNC 0x0008
254
255typedef uint64_t cloudabi_rights_t;
256#define CLOUDABI_RIGHT_FD_DATASYNC 0x0000000000000001
257#define CLOUDABI_RIGHT_FD_READ 0x0000000000000002
258#define CLOUDABI_RIGHT_FD_SEEK 0x0000000000000004
259#define CLOUDABI_RIGHT_FD_STAT_PUT_FLAGS 0x0000000000000008
260#define CLOUDABI_RIGHT_FD_SYNC 0x0000000000000010
261#define CLOUDABI_RIGHT_FD_TELL 0x0000000000000020
262#define CLOUDABI_RIGHT_FD_WRITE 0x0000000000000040
263#define CLOUDABI_RIGHT_FILE_ADVISE 0x0000000000000080
264#define CLOUDABI_RIGHT_FILE_ALLOCATE 0x0000000000000100
265#define CLOUDABI_RIGHT_FILE_CREATE_DIRECTORY 0x0000000000000200
266#define CLOUDABI_RIGHT_FILE_CREATE_FILE 0x0000000000000400
267#define CLOUDABI_RIGHT_FILE_CREATE_FIFO 0x0000000000000800
268#define CLOUDABI_RIGHT_FILE_LINK_SOURCE 0x0000000000001000
269#define CLOUDABI_RIGHT_FILE_LINK_TARGET 0x0000000000002000
270#define CLOUDABI_RIGHT_FILE_OPEN 0x0000000000004000
271#define CLOUDABI_RIGHT_FILE_READDIR 0x0000000000008000
272#define CLOUDABI_RIGHT_FILE_READLINK 0x0000000000010000
273#define CLOUDABI_RIGHT_FILE_RENAME_SOURCE 0x0000000000020000
274#define CLOUDABI_RIGHT_FILE_RENAME_TARGET 0x0000000000040000
275#define CLOUDABI_RIGHT_FILE_STAT_FGET 0x0000000000080000
276#define CLOUDABI_RIGHT_FILE_STAT_FPUT_SIZE 0x0000000000100000
277#define CLOUDABI_RIGHT_FILE_STAT_FPUT_TIMES 0x0000000000200000
278#define CLOUDABI_RIGHT_FILE_STAT_GET 0x0000000000400000
279#define CLOUDABI_RIGHT_FILE_STAT_PUT_TIMES 0x0000000000800000
280#define CLOUDABI_RIGHT_FILE_SYMLINK 0x0000000001000000
281#define CLOUDABI_RIGHT_FILE_UNLINK 0x0000000002000000
282#define CLOUDABI_RIGHT_MEM_MAP 0x0000000004000000
283#define CLOUDABI_RIGHT_MEM_MAP_EXEC 0x0000000008000000
284#define CLOUDABI_RIGHT_POLL_FD_READWRITE 0x0000000010000000
285#define CLOUDABI_RIGHT_POLL_MODIFY 0x0000000020000000
286#define CLOUDABI_RIGHT_POLL_PROC_TERMINATE 0x0000000040000000
287#define CLOUDABI_RIGHT_POLL_WAIT 0x0000000080000000
288#define CLOUDABI_RIGHT_PROC_EXEC 0x0000000100000000
289#define CLOUDABI_RIGHT_SOCK_ACCEPT 0x0000000200000000
290#define CLOUDABI_RIGHT_SOCK_BIND_DIRECTORY 0x0000000400000000
291#define CLOUDABI_RIGHT_SOCK_BIND_SOCKET 0x0000000800000000
292#define CLOUDABI_RIGHT_SOCK_CONNECT_DIRECTORY 0x0000001000000000
293#define CLOUDABI_RIGHT_SOCK_CONNECT_SOCKET 0x0000002000000000
294#define CLOUDABI_RIGHT_SOCK_LISTEN 0x0000004000000000
295#define CLOUDABI_RIGHT_SOCK_SHUTDOWN 0x0000008000000000
296#define CLOUDABI_RIGHT_SOCK_STAT_GET 0x0000010000000000
297
298typedef uint8_t cloudabi_sa_family_t;
299#define CLOUDABI_AF_UNSPEC 0
300#define CLOUDABI_AF_INET 1
301#define CLOUDABI_AF_INET6 2
302#define CLOUDABI_AF_UNIX 3
303
304typedef uint8_t cloudabi_scope_t;
305#define CLOUDABI_SCOPE_PRIVATE 4
306#define CLOUDABI_SCOPE_SHARED 8
307
308typedef uint8_t cloudabi_sdflags_t;
309#define CLOUDABI_SHUT_RD 0x01
310#define CLOUDABI_SHUT_WR 0x02
311
312typedef uint8_t cloudabi_signal_t;
313#define CLOUDABI_SIGABRT 1
314#define CLOUDABI_SIGALRM 2
315#define CLOUDABI_SIGBUS 3
316#define CLOUDABI_SIGCHLD 4
317#define CLOUDABI_SIGCONT 5
318#define CLOUDABI_SIGFPE 6
319#define CLOUDABI_SIGHUP 7
320#define CLOUDABI_SIGILL 8
321#define CLOUDABI_SIGINT 9
322#define CLOUDABI_SIGKILL 10
323#define CLOUDABI_SIGPIPE 11
324#define CLOUDABI_SIGQUIT 12
325#define CLOUDABI_SIGSEGV 13
326#define CLOUDABI_SIGSTOP 14
327#define CLOUDABI_SIGSYS 15
328#define CLOUDABI_SIGTERM 16
329#define CLOUDABI_SIGTRAP 17
330#define CLOUDABI_SIGTSTP 18
331#define CLOUDABI_SIGTTIN 19
332#define CLOUDABI_SIGTTOU 20
333#define CLOUDABI_SIGURG 21
334#define CLOUDABI_SIGUSR1 22
335#define CLOUDABI_SIGUSR2 23
336#define CLOUDABI_SIGVTALRM 24
337#define CLOUDABI_SIGXCPU 25
338#define CLOUDABI_SIGXFSZ 26
339
340typedef uint8_t cloudabi_ssflags_t;
341#define CLOUDABI_SOCKSTAT_CLEAR_ERROR 0x01
342
343typedef uint32_t cloudabi_sstate_t;
344#define CLOUDABI_SOCKSTATE_ACCEPTCONN 0x00000001
345
346typedef uint16_t cloudabi_subclockflags_t;
347#define CLOUDABI_SUBSCRIPTION_CLOCK_ABSTIME 0x0001
348
349typedef uint16_t cloudabi_subflags_t;
350#define CLOUDABI_SUBSCRIPTION_ADD 0x0001
351#define CLOUDABI_SUBSCRIPTION_CLEAR 0x0002
352#define CLOUDABI_SUBSCRIPTION_DELETE 0x0004
353#define CLOUDABI_SUBSCRIPTION_DISABLE 0x0008
354#define CLOUDABI_SUBSCRIPTION_ENABLE 0x0010
355#define CLOUDABI_SUBSCRIPTION_ONESHOT 0x0020
356
357typedef uint16_t cloudabi_subrwflags_t;
358#define CLOUDABI_SUBSCRIPTION_FD_READWRITE_POLL 0x0001
359
360typedef uint32_t cloudabi_tid_t;
361
362typedef uint64_t cloudabi_timestamp_t;
363
364typedef uint8_t cloudabi_ulflags_t;
365#define CLOUDABI_UNLINK_REMOVEDIR 0x01
366
367typedef uint64_t cloudabi_userdata_t;
368
369typedef uint8_t cloudabi_whence_t;
370#define CLOUDABI_WHENCE_CUR 1
371#define CLOUDABI_WHENCE_END 2
372#define CLOUDABI_WHENCE_SET 3
373
374typedef struct {
375  _Alignas(8) cloudabi_dircookie_t d_next;
376  _Alignas(8) cloudabi_inode_t d_ino;
377  _Alignas(4) uint32_t d_namlen;
378  _Alignas(1) cloudabi_filetype_t d_type;
379} cloudabi_dirent_t;
380_Static_assert(offsetof(cloudabi_dirent_t, d_next) == 0, "Incorrect layout");
381_Static_assert(offsetof(cloudabi_dirent_t, d_ino) == 8, "Incorrect layout");
382_Static_assert(offsetof(cloudabi_dirent_t, d_namlen) == 16, "Incorrect layout");
383_Static_assert(offsetof(cloudabi_dirent_t, d_type) == 20, "Incorrect layout");
384_Static_assert(sizeof(cloudabi_dirent_t) == 24, "Incorrect layout");
385_Static_assert(_Alignof(cloudabi_dirent_t) == 8, "Incorrect layout");
386
387typedef struct {
388  _Alignas(1) cloudabi_filetype_t fs_filetype;
389  _Alignas(2) cloudabi_fdflags_t fs_flags;
390  _Alignas(8) cloudabi_rights_t fs_rights_base;
391  _Alignas(8) cloudabi_rights_t fs_rights_inheriting;
392} cloudabi_fdstat_t;
393_Static_assert(offsetof(cloudabi_fdstat_t, fs_filetype) == 0,
394               "Incorrect layout");
395_Static_assert(offsetof(cloudabi_fdstat_t, fs_flags) == 2, "Incorrect layout");
396_Static_assert(offsetof(cloudabi_fdstat_t, fs_rights_base) == 8,
397               "Incorrect layout");
398_Static_assert(offsetof(cloudabi_fdstat_t, fs_rights_inheriting) == 16,
399               "Incorrect layout");
400_Static_assert(sizeof(cloudabi_fdstat_t) == 24, "Incorrect layout");
401_Static_assert(_Alignof(cloudabi_fdstat_t) == 8, "Incorrect layout");
402
403typedef struct {
404  _Alignas(8) cloudabi_device_t st_dev;
405  _Alignas(8) cloudabi_inode_t st_ino;
406  _Alignas(1) cloudabi_filetype_t st_filetype;
407  _Alignas(4) cloudabi_linkcount_t st_nlink;
408  _Alignas(8) cloudabi_filesize_t st_size;
409  _Alignas(8) cloudabi_timestamp_t st_atim;
410  _Alignas(8) cloudabi_timestamp_t st_mtim;
411  _Alignas(8) cloudabi_timestamp_t st_ctim;
412} cloudabi_filestat_t;
413_Static_assert(offsetof(cloudabi_filestat_t, st_dev) == 0, "Incorrect layout");
414_Static_assert(offsetof(cloudabi_filestat_t, st_ino) == 8, "Incorrect layout");
415_Static_assert(offsetof(cloudabi_filestat_t, st_filetype) == 16,
416               "Incorrect layout");
417_Static_assert(offsetof(cloudabi_filestat_t, st_nlink) == 20,
418               "Incorrect layout");
419_Static_assert(offsetof(cloudabi_filestat_t, st_size) == 24,
420               "Incorrect layout");
421_Static_assert(offsetof(cloudabi_filestat_t, st_atim) == 32,
422               "Incorrect layout");
423_Static_assert(offsetof(cloudabi_filestat_t, st_mtim) == 40,
424               "Incorrect layout");
425_Static_assert(offsetof(cloudabi_filestat_t, st_ctim) == 48,
426               "Incorrect layout");
427_Static_assert(sizeof(cloudabi_filestat_t) == 56, "Incorrect layout");
428_Static_assert(_Alignof(cloudabi_filestat_t) == 8, "Incorrect layout");
429
430typedef struct {
431  _Alignas(4) cloudabi_fd_t fd;
432  _Alignas(4) cloudabi_lookupflags_t flags;
433} cloudabi_lookup_t;
434_Static_assert(offsetof(cloudabi_lookup_t, fd) == 0, "Incorrect layout");
435_Static_assert(offsetof(cloudabi_lookup_t, flags) == 4, "Incorrect layout");
436_Static_assert(sizeof(cloudabi_lookup_t) == 8, "Incorrect layout");
437_Static_assert(_Alignof(cloudabi_lookup_t) == 4, "Incorrect layout");
438
439typedef struct {
440  _Alignas(1) cloudabi_sa_family_t sa_family;
441  union {
442    struct {
443      _Alignas(1) uint8_t addr[4];
444      _Alignas(2) uint16_t port;
445    } sa_inet;
446    struct {
447      _Alignas(1) uint8_t addr[16];
448      _Alignas(2) uint16_t port;
449    } sa_inet6;
450  };
451} cloudabi_sockaddr_t;
452_Static_assert(offsetof(cloudabi_sockaddr_t, sa_family) == 0,
453               "Incorrect layout");
454_Static_assert(offsetof(cloudabi_sockaddr_t, sa_inet.addr) == 2,
455               "Incorrect layout");
456_Static_assert(offsetof(cloudabi_sockaddr_t, sa_inet.port) == 6,
457               "Incorrect layout");
458_Static_assert(offsetof(cloudabi_sockaddr_t, sa_inet6.addr) == 2,
459               "Incorrect layout");
460_Static_assert(offsetof(cloudabi_sockaddr_t, sa_inet6.port) == 18,
461               "Incorrect layout");
462_Static_assert(sizeof(cloudabi_sockaddr_t) == 20, "Incorrect layout");
463_Static_assert(_Alignof(cloudabi_sockaddr_t) == 2, "Incorrect layout");
464
465typedef struct {
466  _Alignas(2) cloudabi_sockaddr_t ss_sockname;
467  _Alignas(2) cloudabi_sockaddr_t ss_peername;
468  _Alignas(2) cloudabi_errno_t ss_error;
469  _Alignas(4) cloudabi_sstate_t ss_state;
470} cloudabi_sockstat_t;
471_Static_assert(offsetof(cloudabi_sockstat_t, ss_sockname) == 0,
472               "Incorrect layout");
473_Static_assert(offsetof(cloudabi_sockstat_t, ss_peername) == 20,
474               "Incorrect layout");
475_Static_assert(offsetof(cloudabi_sockstat_t, ss_error) == 40,
476               "Incorrect layout");
477_Static_assert(offsetof(cloudabi_sockstat_t, ss_state) == 44,
478               "Incorrect layout");
479_Static_assert(sizeof(cloudabi_sockstat_t) == 48, "Incorrect layout");
480_Static_assert(_Alignof(cloudabi_sockstat_t) == 4, "Incorrect layout");
481
482#endif
483