cloudabi32_types.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 CLOUDABI32_TYPES_H
29#define CLOUDABI32_TYPES_H
30
31#include "cloudabi_types_common.h"
32
33typedef struct {
34  _Alignas(4) cloudabi_auxtype_t a_type;
35  union {
36    _Alignas(4) uint32_t a_val;
37    _Alignas(4) uint32_t a_ptr;
38  };
39} cloudabi32_auxv_t;
40_Static_assert(offsetof(cloudabi32_auxv_t, a_type) == 0, "Incorrect layout");
41_Static_assert(offsetof(cloudabi32_auxv_t, a_val) == 4, "Incorrect layout");
42_Static_assert(offsetof(cloudabi32_auxv_t, a_ptr) == 4, "Incorrect layout");
43_Static_assert(sizeof(cloudabi32_auxv_t) == 8, "Incorrect layout");
44_Static_assert(_Alignof(cloudabi32_auxv_t) == 4, "Incorrect layout");
45
46typedef struct {
47  _Alignas(4) uint32_t iov_base;
48  _Alignas(4) uint32_t iov_len;
49} cloudabi32_ciovec_t;
50_Static_assert(offsetof(cloudabi32_ciovec_t, iov_base) == 0, "Incorrect layout");
51_Static_assert(offsetof(cloudabi32_ciovec_t, iov_len) == 4, "Incorrect layout");
52_Static_assert(sizeof(cloudabi32_ciovec_t) == 8, "Incorrect layout");
53_Static_assert(_Alignof(cloudabi32_ciovec_t) == 4, "Incorrect layout");
54
55typedef struct {
56  _Alignas(8) cloudabi_userdata_t userdata;
57  _Alignas(2) cloudabi_errno_t error;
58  _Alignas(1) cloudabi_eventtype_t type;
59  union {
60    struct {
61      _Alignas(8) cloudabi_userdata_t identifier;
62    } clock;
63    struct {
64      _Alignas(4) uint32_t condvar;
65    } condvar;
66    struct {
67      _Alignas(8) cloudabi_filesize_t nbytes;
68      _Alignas(4) cloudabi_fd_t fd;
69      _Alignas(2) cloudabi_eventrwflags_t flags;
70    } fd_readwrite;
71    struct {
72      _Alignas(4) uint32_t lock;
73    } lock;
74    struct {
75      _Alignas(4) cloudabi_fd_t fd;
76      _Alignas(1) cloudabi_signal_t signal;
77      _Alignas(4) cloudabi_exitcode_t exitcode;
78    } proc_terminate;
79  };
80} cloudabi32_event_t;
81_Static_assert(offsetof(cloudabi32_event_t, userdata) == 0, "Incorrect layout");
82_Static_assert(offsetof(cloudabi32_event_t, error) == 8, "Incorrect layout");
83_Static_assert(offsetof(cloudabi32_event_t, type) == 10, "Incorrect layout");
84_Static_assert(offsetof(cloudabi32_event_t, clock.identifier) == 16, "Incorrect layout");
85_Static_assert(offsetof(cloudabi32_event_t, condvar.condvar) == 16, "Incorrect layout");
86_Static_assert(offsetof(cloudabi32_event_t, fd_readwrite.nbytes) == 16, "Incorrect layout");
87_Static_assert(offsetof(cloudabi32_event_t, fd_readwrite.fd) == 24, "Incorrect layout");
88_Static_assert(offsetof(cloudabi32_event_t, fd_readwrite.flags) == 28, "Incorrect layout");
89_Static_assert(offsetof(cloudabi32_event_t, lock.lock) == 16, "Incorrect layout");
90_Static_assert(offsetof(cloudabi32_event_t, proc_terminate.fd) == 16, "Incorrect layout");
91_Static_assert(offsetof(cloudabi32_event_t, proc_terminate.signal) == 20, "Incorrect layout");
92_Static_assert(offsetof(cloudabi32_event_t, proc_terminate.exitcode) == 24, "Incorrect layout");
93_Static_assert(sizeof(cloudabi32_event_t) == 32, "Incorrect layout");
94_Static_assert(_Alignof(cloudabi32_event_t) == 8, "Incorrect layout");
95
96typedef struct {
97  _Alignas(4) uint32_t iov_base;
98  _Alignas(4) uint32_t iov_len;
99} cloudabi32_iovec_t;
100_Static_assert(offsetof(cloudabi32_iovec_t, iov_base) == 0, "Incorrect layout");
101_Static_assert(offsetof(cloudabi32_iovec_t, iov_len) == 4, "Incorrect layout");
102_Static_assert(sizeof(cloudabi32_iovec_t) == 8, "Incorrect layout");
103_Static_assert(_Alignof(cloudabi32_iovec_t) == 4, "Incorrect layout");
104
105typedef void cloudabi32_processentry_t(uint32_t auxv);
106
107typedef struct {
108  _Alignas(4) uint32_t ri_data;
109  _Alignas(4) uint32_t ri_datalen;
110  _Alignas(4) uint32_t ri_fds;
111  _Alignas(4) uint32_t ri_fdslen;
112  _Alignas(2) cloudabi_msgflags_t ri_flags;
113} cloudabi32_recv_in_t;
114_Static_assert(offsetof(cloudabi32_recv_in_t, ri_data) == 0, "Incorrect layout");
115_Static_assert(offsetof(cloudabi32_recv_in_t, ri_datalen) == 4, "Incorrect layout");
116_Static_assert(offsetof(cloudabi32_recv_in_t, ri_fds) == 8, "Incorrect layout");
117_Static_assert(offsetof(cloudabi32_recv_in_t, ri_fdslen) == 12, "Incorrect layout");
118_Static_assert(offsetof(cloudabi32_recv_in_t, ri_flags) == 16, "Incorrect layout");
119_Static_assert(sizeof(cloudabi32_recv_in_t) == 20, "Incorrect layout");
120_Static_assert(_Alignof(cloudabi32_recv_in_t) == 4, "Incorrect layout");
121
122typedef struct {
123  _Alignas(4) uint32_t si_data;
124  _Alignas(4) uint32_t si_datalen;
125  _Alignas(4) uint32_t si_fds;
126  _Alignas(4) uint32_t si_fdslen;
127  _Alignas(2) cloudabi_msgflags_t si_flags;
128} cloudabi32_send_in_t;
129_Static_assert(offsetof(cloudabi32_send_in_t, si_data) == 0, "Incorrect layout");
130_Static_assert(offsetof(cloudabi32_send_in_t, si_datalen) == 4, "Incorrect layout");
131_Static_assert(offsetof(cloudabi32_send_in_t, si_fds) == 8, "Incorrect layout");
132_Static_assert(offsetof(cloudabi32_send_in_t, si_fdslen) == 12, "Incorrect layout");
133_Static_assert(offsetof(cloudabi32_send_in_t, si_flags) == 16, "Incorrect layout");
134_Static_assert(sizeof(cloudabi32_send_in_t) == 20, "Incorrect layout");
135_Static_assert(_Alignof(cloudabi32_send_in_t) == 4, "Incorrect layout");
136
137typedef struct {
138  _Alignas(4) uint32_t so_datalen;
139} cloudabi32_send_out_t;
140_Static_assert(offsetof(cloudabi32_send_out_t, so_datalen) == 0, "Incorrect layout");
141_Static_assert(sizeof(cloudabi32_send_out_t) == 4, "Incorrect layout");
142_Static_assert(_Alignof(cloudabi32_send_out_t) == 4, "Incorrect layout");
143
144typedef struct {
145  _Alignas(8) cloudabi_userdata_t userdata;
146  _Alignas(2) cloudabi_subflags_t flags;
147  _Alignas(1) cloudabi_eventtype_t type;
148  union {
149    struct {
150      _Alignas(8) cloudabi_userdata_t identifier;
151      _Alignas(4) cloudabi_clockid_t clock_id;
152      _Alignas(8) cloudabi_timestamp_t timeout;
153      _Alignas(8) cloudabi_timestamp_t precision;
154      _Alignas(2) cloudabi_subclockflags_t flags;
155    } clock;
156    struct {
157      _Alignas(4) uint32_t condvar;
158      _Alignas(4) uint32_t lock;
159      _Alignas(1) cloudabi_scope_t condvar_scope;
160      _Alignas(1) cloudabi_scope_t lock_scope;
161    } condvar;
162    struct {
163      _Alignas(4) cloudabi_fd_t fd;
164      _Alignas(2) cloudabi_subrwflags_t flags;
165    } fd_readwrite;
166    struct {
167      _Alignas(4) uint32_t lock;
168      _Alignas(1) cloudabi_scope_t lock_scope;
169    } lock;
170    struct {
171      _Alignas(4) cloudabi_fd_t fd;
172    } proc_terminate;
173  };
174} cloudabi32_subscription_t;
175_Static_assert(offsetof(cloudabi32_subscription_t, userdata) == 0, "Incorrect layout");
176_Static_assert(offsetof(cloudabi32_subscription_t, flags) == 8, "Incorrect layout");
177_Static_assert(offsetof(cloudabi32_subscription_t, type) == 10, "Incorrect layout");
178_Static_assert(offsetof(cloudabi32_subscription_t, clock.identifier) == 16, "Incorrect layout");
179_Static_assert(offsetof(cloudabi32_subscription_t, clock.clock_id) == 24, "Incorrect layout");
180_Static_assert(offsetof(cloudabi32_subscription_t, clock.timeout) == 32, "Incorrect layout");
181_Static_assert(offsetof(cloudabi32_subscription_t, clock.precision) == 40, "Incorrect layout");
182_Static_assert(offsetof(cloudabi32_subscription_t, clock.flags) == 48, "Incorrect layout");
183_Static_assert(offsetof(cloudabi32_subscription_t, condvar.condvar) == 16, "Incorrect layout");
184_Static_assert(offsetof(cloudabi32_subscription_t, condvar.lock) == 20, "Incorrect layout");
185_Static_assert(offsetof(cloudabi32_subscription_t, condvar.condvar_scope) == 24, "Incorrect layout");
186_Static_assert(offsetof(cloudabi32_subscription_t, condvar.lock_scope) == 25, "Incorrect layout");
187_Static_assert(offsetof(cloudabi32_subscription_t, fd_readwrite.fd) == 16, "Incorrect layout");
188_Static_assert(offsetof(cloudabi32_subscription_t, fd_readwrite.flags) == 20, "Incorrect layout");
189_Static_assert(offsetof(cloudabi32_subscription_t, lock.lock) == 16, "Incorrect layout");
190_Static_assert(offsetof(cloudabi32_subscription_t, lock.lock_scope) == 20, "Incorrect layout");
191_Static_assert(offsetof(cloudabi32_subscription_t, proc_terminate.fd) == 16, "Incorrect layout");
192_Static_assert(sizeof(cloudabi32_subscription_t) == 56, "Incorrect layout");
193_Static_assert(_Alignof(cloudabi32_subscription_t) == 8, "Incorrect layout");
194
195typedef struct {
196  _Alignas(4) uint32_t parent;
197} cloudabi32_tcb_t;
198_Static_assert(offsetof(cloudabi32_tcb_t, parent) == 0, "Incorrect layout");
199_Static_assert(sizeof(cloudabi32_tcb_t) == 4, "Incorrect layout");
200_Static_assert(_Alignof(cloudabi32_tcb_t) == 4, "Incorrect layout");
201
202typedef void cloudabi32_threadentry_t(cloudabi_tid_t tid, uint32_t aux);
203
204typedef struct {
205  _Alignas(4) uint32_t ro_datalen;
206  _Alignas(4) uint32_t ro_fdslen;
207  _Alignas(2) cloudabi_sockaddr_t ro_sockname;
208  _Alignas(2) cloudabi_sockaddr_t ro_peername;
209  _Alignas(2) cloudabi_msgflags_t ro_flags;
210} cloudabi32_recv_out_t;
211_Static_assert(offsetof(cloudabi32_recv_out_t, ro_datalen) == 0, "Incorrect layout");
212_Static_assert(offsetof(cloudabi32_recv_out_t, ro_fdslen) == 4, "Incorrect layout");
213_Static_assert(offsetof(cloudabi32_recv_out_t, ro_sockname) == 8, "Incorrect layout");
214_Static_assert(offsetof(cloudabi32_recv_out_t, ro_peername) == 28, "Incorrect layout");
215_Static_assert(offsetof(cloudabi32_recv_out_t, ro_flags) == 48, "Incorrect layout");
216_Static_assert(sizeof(cloudabi32_recv_out_t) == 52, "Incorrect layout");
217_Static_assert(_Alignof(cloudabi32_recv_out_t) == 4, "Incorrect layout");
218
219typedef struct {
220  _Alignas(4) uint32_t entry_point;
221  _Alignas(4) uint32_t stack;
222  _Alignas(4) uint32_t stack_size;
223  _Alignas(4) uint32_t argument;
224} cloudabi32_threadattr_t;
225_Static_assert(offsetof(cloudabi32_threadattr_t, entry_point) == 0, "Incorrect layout");
226_Static_assert(offsetof(cloudabi32_threadattr_t, stack) == 4, "Incorrect layout");
227_Static_assert(offsetof(cloudabi32_threadattr_t, stack_size) == 8, "Incorrect layout");
228_Static_assert(offsetof(cloudabi32_threadattr_t, argument) == 12, "Incorrect layout");
229_Static_assert(sizeof(cloudabi32_threadattr_t) == 16, "Incorrect layout");
230_Static_assert(_Alignof(cloudabi32_threadattr_t) == 4, "Incorrect layout");
231
232#endif
233