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