summaryrefslogtreecommitdiffstats
path: root/sys/contrib/cloudabi/syscalldefs_md.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/cloudabi/syscalldefs_md.h')
-rw-r--r--sys/contrib/cloudabi/syscalldefs_md.h255
1 files changed, 0 insertions, 255 deletions
diff --git a/sys/contrib/cloudabi/syscalldefs_md.h b/sys/contrib/cloudabi/syscalldefs_md.h
deleted file mode 100644
index f2e3705..0000000
--- a/sys/contrib/cloudabi/syscalldefs_md.h
+++ /dev/null
@@ -1,255 +0,0 @@
-// Copyright (c) 2015 Nuxi, https://nuxi.nl/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1. Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// 2. Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-// SUCH DAMAGE.
-
-// Machine dependent definitions.
-
-// Macro to force sane alignment rules.
-//
-// On x86-32 it is the case that 64-bit integers are 4-byte aligned when
-// embedded in structs, even though they are 8-byte aligned when not
-// embedded. Force 8-byte alignment explicitly.
-#define MEMBER(type) alignas(alignof(type)) type
-#define ASSERT_OFFSET(type, field, offset32, offset64) \
- static_assert((sizeof(PTR(void)) == 4 && \
- offsetof(IDENT(type), field) == (offset32)) || \
- (sizeof(PTR(void)) == 8 && \
- offsetof(IDENT(type), field) == (offset64)), \
- "Offset incorrect")
-#define ASSERT_SIZE(type, size32, size64) \
- static_assert( \
- (sizeof(PTR(void)) == 4 && sizeof(IDENT(type)) == (size32)) || \
- (sizeof(PTR(void)) == 8 && sizeof(IDENT(type)) == (size64)), \
- "Size incorrect")
-
-typedef void IDENT(threadentry_t)(cloudabi_tid_t, PTR(void));
-
-// Auxiliary vector entry, used to provide paramters on startup.
-typedef struct {
- uint32_t a_type;
- union {
- MEMBER(IDENT(size_t)) a_val;
- MEMBER(PTR(void)) a_ptr;
- };
-} IDENT(auxv_t);
-ASSERT_OFFSET(auxv_t, a_type, 0, 0);
-ASSERT_OFFSET(auxv_t, a_val, 4, 8);
-ASSERT_OFFSET(auxv_t, a_ptr, 4, 8);
-ASSERT_SIZE(auxv_t, 8, 16);
-
-typedef struct {
- MEMBER(PTR(const void)) iov_base;
- MEMBER(IDENT(size_t)) iov_len;
-} IDENT(ciovec_t);
-ASSERT_OFFSET(ciovec_t, iov_base, 0, 0);
-ASSERT_OFFSET(ciovec_t, iov_len, 4, 8);
-ASSERT_SIZE(ciovec_t, 8, 16);
-
-typedef struct {
- MEMBER(cloudabi_userdata_t) userdata;
- MEMBER(cloudabi_errno_t) error;
- MEMBER(cloudabi_eventtype_t) type;
- union {
- // CLOUDABI_EVENTTYPE_CLOCK: Wait until the value of a clock
- // exceeds a value.
- struct {
- MEMBER(cloudabi_userdata_t) identifier;
- } clock;
-
- // CLOUDABI_EVENTTYPE_CONDVAR: Release a lock and wait on a
- // condition variable.
- struct {
- MEMBER(PTR(_Atomic(cloudabi_condvar_t))) condvar;
- } condvar;
-
- // CLOUDABI_EVENTTYPE_FD_READ and CLOUDABI_EVENTTYPE_FD_WRITE:
- // Wait for a file descriptor to allow read() and write() to be
- // called without blocking.
- struct {
- MEMBER(cloudabi_filesize_t) nbytes;
- MEMBER(cloudabi_fd_t) fd;
- MEMBER(uint16_t) flags;
- } fd_readwrite;
-
- // CLOUDABI_EVENT_LOCK_RDLOCK and CLOUDABI_EVENT_LOCK_WRLOCK: Wait
- // and acquire a read or write lock.
- struct {
- MEMBER(PTR(_Atomic(cloudabi_lock_t))) lock;
- } lock;
-
- // CLOUDABI_EVENTTYPE_PROC_TERMINATE: Wait for a process to terminate.
- struct {
- MEMBER(cloudabi_fd_t) fd;
- MEMBER(cloudabi_signal_t) signal; // Non-zero if process got killed.
- MEMBER(cloudabi_exitcode_t) exitcode; // Exit code.
- } proc_terminate;
- };
-} IDENT(event_t);
-ASSERT_OFFSET(event_t, userdata, 0, 0);
-ASSERT_OFFSET(event_t, error, 8, 8);
-ASSERT_OFFSET(event_t, type, 10, 10);
-ASSERT_OFFSET(event_t, clock.identifier, 16, 16);
-ASSERT_OFFSET(event_t, condvar.condvar, 16, 16);
-ASSERT_OFFSET(event_t, fd_readwrite.nbytes, 16, 16);
-ASSERT_OFFSET(event_t, fd_readwrite.fd, 24, 24);
-ASSERT_OFFSET(event_t, fd_readwrite.flags, 28, 28);
-ASSERT_OFFSET(event_t, lock.lock, 16, 16);
-ASSERT_OFFSET(event_t, proc_terminate.fd, 16, 16);
-ASSERT_OFFSET(event_t, proc_terminate.signal, 20, 20);
-ASSERT_OFFSET(event_t, proc_terminate.exitcode, 24, 24);
-ASSERT_SIZE(event_t, 32, 32);
-
-typedef struct {
- MEMBER(PTR(void)) iov_base;
- MEMBER(IDENT(size_t)) iov_len;
-} IDENT(iovec_t);
-ASSERT_OFFSET(iovec_t, iov_base, 0, 0);
-ASSERT_OFFSET(iovec_t, iov_len, 4, 8);
-ASSERT_SIZE(iovec_t, 8, 16);
-
-typedef struct {
- MEMBER(PTR(const IDENT(iovec_t))) ri_data; // Data I/O vectors.
- MEMBER(IDENT(size_t)) ri_datalen; // Number of data I/O vectors.
- MEMBER(PTR(cloudabi_fd_t)) ri_fds; // File descriptors.
- MEMBER(IDENT(size_t)) ri_fdslen; // Number of file descriptors.
- MEMBER(cloudabi_msgflags_t) ri_flags; // Input flags.
-} IDENT(recv_in_t);
-ASSERT_OFFSET(recv_in_t, ri_data, 0, 0);
-ASSERT_OFFSET(recv_in_t, ri_datalen, 4, 8);
-ASSERT_OFFSET(recv_in_t, ri_fds, 8, 16);
-ASSERT_OFFSET(recv_in_t, ri_fdslen, 12, 24);
-ASSERT_OFFSET(recv_in_t, ri_flags, 16, 32);
-ASSERT_SIZE(recv_in_t, 20, 40);
-
-typedef struct {
- MEMBER(IDENT(size_t)) ro_datalen; // Bytes of data received.
- MEMBER(IDENT(size_t)) ro_fdslen; // Number of file descriptors received.
- MEMBER(cloudabi_sockaddr_t) ro_sockname; // Address of receiver.
- MEMBER(cloudabi_sockaddr_t) ro_peername; // Address of sender.
- MEMBER(cloudabi_msgflags_t) ro_flags; // Output flags.
-} IDENT(recv_out_t);
-ASSERT_OFFSET(recv_out_t, ro_datalen, 0, 0);
-ASSERT_OFFSET(recv_out_t, ro_fdslen, 4, 8);
-ASSERT_OFFSET(recv_out_t, ro_sockname, 8, 16);
-ASSERT_OFFSET(recv_out_t, ro_peername, 28, 36);
-ASSERT_OFFSET(recv_out_t, ro_flags, 48, 56);
-ASSERT_SIZE(recv_out_t, 52, 64);
-
-typedef struct {
- MEMBER(PTR(const IDENT(ciovec_t))) si_data; // Data I/O vectors.
- MEMBER(IDENT(size_t)) si_datalen; // Number of data I/O vectors.
- MEMBER(PTR(const cloudabi_fd_t)) si_fds; // File descriptors.
- MEMBER(IDENT(size_t)) si_fdslen; // Number of file descriptors.
- MEMBER(cloudabi_msgflags_t) si_flags; // Input flags.
-} IDENT(send_in_t);
-ASSERT_OFFSET(send_in_t, si_data, 0, 0);
-ASSERT_OFFSET(send_in_t, si_datalen, 4, 8);
-ASSERT_OFFSET(send_in_t, si_fds, 8, 16);
-ASSERT_OFFSET(send_in_t, si_fdslen, 12, 24);
-ASSERT_OFFSET(send_in_t, si_flags, 16, 32);
-ASSERT_SIZE(send_in_t, 20, 40);
-
-typedef struct {
- MEMBER(IDENT(size_t)) so_datalen; // Bytes of data sent.
-} IDENT(send_out_t);
-ASSERT_OFFSET(send_out_t, so_datalen, 0, 0);
-ASSERT_SIZE(send_out_t, 4, 8);
-
-typedef struct {
- MEMBER(cloudabi_userdata_t) userdata;
- MEMBER(uint16_t) flags;
- MEMBER(cloudabi_eventtype_t) type;
- union {
- // CLOUDABI_EVENTTYPE_CLOCK: Wait until the value of a clock
- // exceeds a value.
- struct {
- MEMBER(cloudabi_userdata_t) identifier;
- MEMBER(cloudabi_clockid_t) clock_id;
- MEMBER(cloudabi_timestamp_t) timeout;
- MEMBER(cloudabi_timestamp_t) precision;
- MEMBER(uint16_t) flags;
- } clock;
-
- // CLOUDABI_EVENTTYPE_CONDVAR: Release a lock and wait on a
- // condition variable.
- struct {
- MEMBER(PTR(_Atomic(cloudabi_condvar_t))) condvar;
- MEMBER(PTR(_Atomic(cloudabi_lock_t))) lock;
- MEMBER(cloudabi_mflags_t) condvar_scope;
- MEMBER(cloudabi_mflags_t) lock_scope;
- } condvar;
-
- // CLOUDABI_EVENTTYPE_FD_READ and CLOUDABI_EVENTTYPE_FD_WRITE:
- // Wait for a file descriptor to allow read() and write() to be
- // called without blocking.
- struct {
- MEMBER(cloudabi_fd_t) fd;
- MEMBER(uint16_t) flags;
- } fd_readwrite;
-
- // CLOUDABI_EVENT_LOCK_RDLOCK and CLOUDABI_EVENT_LOCK_WRLOCK: Wait
- // and acquire a read or write lock.
- struct {
- MEMBER(PTR(_Atomic(cloudabi_lock_t))) lock;
- MEMBER(cloudabi_mflags_t) lock_scope;
- } lock;
-
- // CLOUDABI_EVENTTYPE_PROC_TERMINATE: Wait for a process to terminate.
- struct {
- MEMBER(cloudabi_fd_t) fd;
- } proc_terminate;
- };
-} IDENT(subscription_t);
-ASSERT_OFFSET(subscription_t, userdata, 0, 0);
-ASSERT_OFFSET(subscription_t, flags, 8, 8);
-ASSERT_OFFSET(subscription_t, type, 10, 10);
-ASSERT_OFFSET(subscription_t, clock.identifier, 16, 16);
-ASSERT_OFFSET(subscription_t, clock.clock_id, 24, 24);
-ASSERT_OFFSET(subscription_t, clock.timeout, 32, 32);
-ASSERT_OFFSET(subscription_t, clock.precision, 40, 40);
-ASSERT_OFFSET(subscription_t, clock.flags, 48, 48);
-ASSERT_OFFSET(subscription_t, condvar.condvar, 16, 16);
-ASSERT_OFFSET(subscription_t, condvar.lock, 20, 24);
-ASSERT_OFFSET(subscription_t, condvar.condvar_scope, 24, 32);
-ASSERT_OFFSET(subscription_t, condvar.lock_scope, 25, 33);
-ASSERT_OFFSET(subscription_t, fd_readwrite.fd, 16, 16);
-ASSERT_OFFSET(subscription_t, fd_readwrite.flags, 20, 20);
-ASSERT_OFFSET(subscription_t, lock.lock, 16, 16);
-ASSERT_OFFSET(subscription_t, lock.lock_scope, 20, 24);
-ASSERT_OFFSET(subscription_t, proc_terminate.fd, 16, 16);
-ASSERT_SIZE(subscription_t, 56, 56);
-
-typedef struct {
- MEMBER(PTR(IDENT(threadentry_t))) entry_point; // Entry point.
- MEMBER(PTR(void)) stack; // Pointer to stack buffer.
- MEMBER(IDENT(size_t)) stack_size; // Size of stack buffer.
- MEMBER(PTR(void)) argument; // Argument to be passed to entry point.
-} IDENT(threadattr_t);
-ASSERT_OFFSET(threadattr_t, entry_point, 0, 0);
-ASSERT_OFFSET(threadattr_t, stack, 4, 8);
-ASSERT_OFFSET(threadattr_t, stack_size, 8, 16);
-ASSERT_OFFSET(threadattr_t, argument, 12, 24);
-ASSERT_SIZE(threadattr_t, 16, 32);
-
-#undef MEMBER
-#undef ASSERT_OFFSET
-#undef ASSERT_SIZE
OpenPOWER on IntegriCloud