1 // Copyright (c) 2016-2017 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 40 typedef 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 48 typedef 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 63 typedef 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 69 typedef uint32_t cloudabi_condvar_t; 70 #define CLOUDABI_CONDVAR_HAS_NO_WAITERS 0 71 72 typedef uint64_t cloudabi_device_t; 73 74 typedef uint64_t cloudabi_dircookie_t; 75 #define CLOUDABI_DIRCOOKIE_START 0 76 77 typedef uint16_t cloudabi_errno_t; 78 #define CLOUDABI_ESUCCESS 0 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 156 typedef uint16_t cloudabi_eventrwflags_t; 157 #define CLOUDABI_EVENT_FD_READWRITE_HANGUP 0x0001 158 159 typedef 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 168 typedef uint32_t cloudabi_exitcode_t; 169 170 typedef uint32_t cloudabi_fd_t; 171 #define CLOUDABI_PROCESS_CHILD 0xffffffff 172 #define CLOUDABI_MAP_ANON_FD 0xffffffff 173 174 typedef 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 181 typedef uint16_t cloudabi_fdsflags_t; 182 #define CLOUDABI_FDSTAT_FLAGS 0x0001 183 #define CLOUDABI_FDSTAT_RIGHTS 0x0002 184 185 typedef int64_t cloudabi_filedelta_t; 186 187 typedef uint64_t cloudabi_filesize_t; 188 189 typedef 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_PROCESS 80 195 #define CLOUDABI_FILETYPE_REGULAR_FILE 96 196 #define CLOUDABI_FILETYPE_SHARED_MEMORY 112 197 #define CLOUDABI_FILETYPE_SOCKET_DGRAM 128 198 #define CLOUDABI_FILETYPE_SOCKET_STREAM 130 199 #define CLOUDABI_FILETYPE_SYMBOLIC_LINK 144 200 201 typedef uint16_t cloudabi_fsflags_t; 202 #define CLOUDABI_FILESTAT_ATIM 0x0001 203 #define CLOUDABI_FILESTAT_ATIM_NOW 0x0002 204 #define CLOUDABI_FILESTAT_MTIM 0x0004 205 #define CLOUDABI_FILESTAT_MTIM_NOW 0x0008 206 #define CLOUDABI_FILESTAT_SIZE 0x0010 207 208 typedef uint64_t cloudabi_inode_t; 209 210 typedef uint32_t cloudabi_linkcount_t; 211 212 typedef uint32_t cloudabi_lock_t; 213 #define CLOUDABI_LOCK_UNLOCKED 0x00000000 214 #define CLOUDABI_LOCK_WRLOCKED 0x40000000 215 #define CLOUDABI_LOCK_KERNEL_MANAGED 0x80000000 216 #define CLOUDABI_LOCK_BOGUS 0x80000000 217 218 typedef uint32_t cloudabi_lookupflags_t; 219 #define CLOUDABI_LOOKUP_SYMLINK_FOLLOW 0x00000001 220 221 typedef uint8_t cloudabi_mflags_t; 222 #define CLOUDABI_MAP_ANON 0x01 223 #define CLOUDABI_MAP_FIXED 0x02 224 #define CLOUDABI_MAP_PRIVATE 0x04 225 #define CLOUDABI_MAP_SHARED 0x08 226 227 typedef uint8_t cloudabi_mprot_t; 228 #define CLOUDABI_PROT_EXEC 0x01 229 #define CLOUDABI_PROT_WRITE 0x02 230 #define CLOUDABI_PROT_READ 0x04 231 232 typedef uint8_t cloudabi_msflags_t; 233 #define CLOUDABI_MS_ASYNC 0x01 234 #define CLOUDABI_MS_INVALIDATE 0x02 235 #define CLOUDABI_MS_SYNC 0x04 236 237 typedef uint32_t cloudabi_nthreads_t; 238 239 typedef uint16_t cloudabi_oflags_t; 240 #define CLOUDABI_O_CREAT 0x0001 241 #define CLOUDABI_O_DIRECTORY 0x0002 242 #define CLOUDABI_O_EXCL 0x0004 243 #define CLOUDABI_O_TRUNC 0x0008 244 245 typedef uint16_t cloudabi_riflags_t; 246 #define CLOUDABI_SOCK_RECV_PEEK 0x0004 247 #define CLOUDABI_SOCK_RECV_WAITALL 0x0010 248 249 typedef uint64_t cloudabi_rights_t; 250 #define CLOUDABI_RIGHT_FD_DATASYNC 0x0000000000000001 251 #define CLOUDABI_RIGHT_FD_READ 0x0000000000000002 252 #define CLOUDABI_RIGHT_FD_SEEK 0x0000000000000004 253 #define CLOUDABI_RIGHT_FD_STAT_PUT_FLAGS 0x0000000000000008 254 #define CLOUDABI_RIGHT_FD_SYNC 0x0000000000000010 255 #define CLOUDABI_RIGHT_FD_TELL 0x0000000000000020 256 #define CLOUDABI_RIGHT_FD_WRITE 0x0000000000000040 257 #define CLOUDABI_RIGHT_FILE_ADVISE 0x0000000000000080 258 #define CLOUDABI_RIGHT_FILE_ALLOCATE 0x0000000000000100 259 #define CLOUDABI_RIGHT_FILE_CREATE_DIRECTORY 0x0000000000000200 260 #define CLOUDABI_RIGHT_FILE_CREATE_FILE 0x0000000000000400 261 #define CLOUDABI_RIGHT_FILE_LINK_SOURCE 0x0000000000001000 262 #define CLOUDABI_RIGHT_FILE_LINK_TARGET 0x0000000000002000 263 #define CLOUDABI_RIGHT_FILE_OPEN 0x0000000000004000 264 #define CLOUDABI_RIGHT_FILE_READDIR 0x0000000000008000 265 #define CLOUDABI_RIGHT_FILE_READLINK 0x0000000000010000 266 #define CLOUDABI_RIGHT_FILE_RENAME_SOURCE 0x0000000000020000 267 #define CLOUDABI_RIGHT_FILE_RENAME_TARGET 0x0000000000040000 268 #define CLOUDABI_RIGHT_FILE_STAT_FGET 0x0000000000080000 269 #define CLOUDABI_RIGHT_FILE_STAT_FPUT_SIZE 0x0000000000100000 270 #define CLOUDABI_RIGHT_FILE_STAT_FPUT_TIMES 0x0000000000200000 271 #define CLOUDABI_RIGHT_FILE_STAT_GET 0x0000000000400000 272 #define CLOUDABI_RIGHT_FILE_STAT_PUT_TIMES 0x0000000000800000 273 #define CLOUDABI_RIGHT_FILE_SYMLINK 0x0000000001000000 274 #define CLOUDABI_RIGHT_FILE_UNLINK 0x0000000002000000 275 #define CLOUDABI_RIGHT_MEM_MAP 0x0000000004000000 276 #define CLOUDABI_RIGHT_MEM_MAP_EXEC 0x0000000008000000 277 #define CLOUDABI_RIGHT_POLL_FD_READWRITE 0x0000000010000000 278 #define CLOUDABI_RIGHT_POLL_PROC_TERMINATE 0x0000000040000000 279 #define CLOUDABI_RIGHT_PROC_EXEC 0x0000000100000000 280 #define CLOUDABI_RIGHT_SOCK_SHUTDOWN 0x0000008000000000 281 282 typedef uint16_t cloudabi_roflags_t; 283 #define CLOUDABI_SOCK_RECV_FDS_TRUNCATED 0x0001 284 #define CLOUDABI_SOCK_RECV_DATA_TRUNCATED 0x0008 285 286 typedef uint8_t cloudabi_scope_t; 287 #define CLOUDABI_SCOPE_PRIVATE 4 288 #define CLOUDABI_SCOPE_SHARED 8 289 290 typedef uint8_t cloudabi_sdflags_t; 291 #define CLOUDABI_SHUT_RD 0x01 292 #define CLOUDABI_SHUT_WR 0x02 293 294 typedef uint16_t cloudabi_siflags_t; 295 296 typedef uint8_t cloudabi_signal_t; 297 #define CLOUDABI_SIGABRT 1 298 #define CLOUDABI_SIGALRM 2 299 #define CLOUDABI_SIGBUS 3 300 #define CLOUDABI_SIGCHLD 4 301 #define CLOUDABI_SIGCONT 5 302 #define CLOUDABI_SIGFPE 6 303 #define CLOUDABI_SIGHUP 7 304 #define CLOUDABI_SIGILL 8 305 #define CLOUDABI_SIGINT 9 306 #define CLOUDABI_SIGKILL 10 307 #define CLOUDABI_SIGPIPE 11 308 #define CLOUDABI_SIGQUIT 12 309 #define CLOUDABI_SIGSEGV 13 310 #define CLOUDABI_SIGSTOP 14 311 #define CLOUDABI_SIGSYS 15 312 #define CLOUDABI_SIGTERM 16 313 #define CLOUDABI_SIGTRAP 17 314 #define CLOUDABI_SIGTSTP 18 315 #define CLOUDABI_SIGTTIN 19 316 #define CLOUDABI_SIGTTOU 20 317 #define CLOUDABI_SIGURG 21 318 #define CLOUDABI_SIGUSR1 22 319 #define CLOUDABI_SIGUSR2 23 320 #define CLOUDABI_SIGVTALRM 24 321 #define CLOUDABI_SIGXCPU 25 322 #define CLOUDABI_SIGXFSZ 26 323 324 typedef uint16_t cloudabi_subclockflags_t; 325 #define CLOUDABI_SUBSCRIPTION_CLOCK_ABSTIME 0x0001 326 327 typedef uint16_t cloudabi_subrwflags_t; 328 #define CLOUDABI_SUBSCRIPTION_FD_READWRITE_POLL 0x0001 329 330 typedef uint32_t cloudabi_tid_t; 331 332 typedef uint64_t cloudabi_timestamp_t; 333 334 typedef uint8_t cloudabi_ulflags_t; 335 #define CLOUDABI_UNLINK_REMOVEDIR 0x01 336 337 typedef uint64_t cloudabi_userdata_t; 338 339 typedef uint8_t cloudabi_whence_t; 340 #define CLOUDABI_WHENCE_CUR 1 341 #define CLOUDABI_WHENCE_END 2 342 #define CLOUDABI_WHENCE_SET 3 343 344 typedef struct { 345 _Alignas(8) cloudabi_dircookie_t d_next; 346 _Alignas(8) cloudabi_inode_t d_ino; 347 _Alignas(4) uint32_t d_namlen; 348 _Alignas(1) cloudabi_filetype_t d_type; 349 } cloudabi_dirent_t; 350 _Static_assert(offsetof(cloudabi_dirent_t, d_next) == 0, "Incorrect layout"); 351 _Static_assert(offsetof(cloudabi_dirent_t, d_ino) == 8, "Incorrect layout"); 352 _Static_assert(offsetof(cloudabi_dirent_t, d_namlen) == 16, "Incorrect layout"); 353 _Static_assert(offsetof(cloudabi_dirent_t, d_type) == 20, "Incorrect layout"); 354 _Static_assert(sizeof(cloudabi_dirent_t) == 24, "Incorrect layout"); 355 _Static_assert(_Alignof(cloudabi_dirent_t) == 8, "Incorrect layout"); 356 357 typedef struct { 358 _Alignas(8) cloudabi_userdata_t userdata; 359 _Alignas(2) cloudabi_errno_t error; 360 _Alignas(1) cloudabi_eventtype_t type; 361 union { 362 struct { 363 _Alignas(8) cloudabi_filesize_t nbytes; 364 _Alignas(1) char unused[4]; 365 _Alignas(2) cloudabi_eventrwflags_t flags; 366 } fd_readwrite; 367 struct { 368 _Alignas(1) char unused[4]; 369 _Alignas(1) cloudabi_signal_t signal; 370 _Alignas(4) cloudabi_exitcode_t exitcode; 371 } proc_terminate; 372 }; 373 } cloudabi_event_t; 374 _Static_assert(offsetof(cloudabi_event_t, userdata) == 0, "Incorrect layout"); 375 _Static_assert(offsetof(cloudabi_event_t, error) == 8, "Incorrect layout"); 376 _Static_assert(offsetof(cloudabi_event_t, type) == 10, "Incorrect layout"); 377 _Static_assert(offsetof(cloudabi_event_t, fd_readwrite.nbytes) == 16, "Incorrect layout"); 378 _Static_assert(offsetof(cloudabi_event_t, fd_readwrite.unused) == 24, "Incorrect layout"); 379 _Static_assert(offsetof(cloudabi_event_t, fd_readwrite.flags) == 28, "Incorrect layout"); 380 _Static_assert(offsetof(cloudabi_event_t, proc_terminate.unused) == 16, "Incorrect layout"); 381 _Static_assert(offsetof(cloudabi_event_t, proc_terminate.signal) == 20, "Incorrect layout"); 382 _Static_assert(offsetof(cloudabi_event_t, proc_terminate.exitcode) == 24, "Incorrect layout"); 383 _Static_assert(sizeof(cloudabi_event_t) == 32, "Incorrect layout"); 384 _Static_assert(_Alignof(cloudabi_event_t) == 8, "Incorrect layout"); 385 386 typedef struct { 387 _Alignas(1) cloudabi_filetype_t fs_filetype; 388 _Alignas(2) cloudabi_fdflags_t fs_flags; 389 _Alignas(8) cloudabi_rights_t fs_rights_base; 390 _Alignas(8) cloudabi_rights_t fs_rights_inheriting; 391 } cloudabi_fdstat_t; 392 _Static_assert(offsetof(cloudabi_fdstat_t, fs_filetype) == 0, "Incorrect layout"); 393 _Static_assert(offsetof(cloudabi_fdstat_t, fs_flags) == 2, "Incorrect layout"); 394 _Static_assert(offsetof(cloudabi_fdstat_t, fs_rights_base) == 8, "Incorrect layout"); 395 _Static_assert(offsetof(cloudabi_fdstat_t, fs_rights_inheriting) == 16, "Incorrect layout"); 396 _Static_assert(sizeof(cloudabi_fdstat_t) == 24, "Incorrect layout"); 397 _Static_assert(_Alignof(cloudabi_fdstat_t) == 8, "Incorrect layout"); 398 399 typedef struct { 400 _Alignas(8) cloudabi_device_t st_dev; 401 _Alignas(8) cloudabi_inode_t st_ino; 402 _Alignas(1) cloudabi_filetype_t st_filetype; 403 _Alignas(4) cloudabi_linkcount_t st_nlink; 404 _Alignas(8) cloudabi_filesize_t st_size; 405 _Alignas(8) cloudabi_timestamp_t st_atim; 406 _Alignas(8) cloudabi_timestamp_t st_mtim; 407 _Alignas(8) cloudabi_timestamp_t st_ctim; 408 } cloudabi_filestat_t; 409 _Static_assert(offsetof(cloudabi_filestat_t, st_dev) == 0, "Incorrect layout"); 410 _Static_assert(offsetof(cloudabi_filestat_t, st_ino) == 8, "Incorrect layout"); 411 _Static_assert(offsetof(cloudabi_filestat_t, st_filetype) == 16, "Incorrect layout"); 412 _Static_assert(offsetof(cloudabi_filestat_t, st_nlink) == 20, "Incorrect layout"); 413 _Static_assert(offsetof(cloudabi_filestat_t, st_size) == 24, "Incorrect layout"); 414 _Static_assert(offsetof(cloudabi_filestat_t, st_atim) == 32, "Incorrect layout"); 415 _Static_assert(offsetof(cloudabi_filestat_t, st_mtim) == 40, "Incorrect layout"); 416 _Static_assert(offsetof(cloudabi_filestat_t, st_ctim) == 48, "Incorrect layout"); 417 _Static_assert(sizeof(cloudabi_filestat_t) == 56, "Incorrect layout"); 418 _Static_assert(_Alignof(cloudabi_filestat_t) == 8, "Incorrect layout"); 419 420 typedef struct { 421 _Alignas(4) cloudabi_fd_t fd; 422 _Alignas(4) cloudabi_lookupflags_t flags; 423 } cloudabi_lookup_t; 424 _Static_assert(offsetof(cloudabi_lookup_t, fd) == 0, "Incorrect layout"); 425 _Static_assert(offsetof(cloudabi_lookup_t, flags) == 4, "Incorrect layout"); 426 _Static_assert(sizeof(cloudabi_lookup_t) == 8, "Incorrect layout"); 427 _Static_assert(_Alignof(cloudabi_lookup_t) == 4, "Incorrect layout"); 428 429 #endif 430