freebsd-nq/sys/compat/cloudabi64/syscalls.master

221 lines
7.8 KiB
Plaintext
Raw Normal View History

Import the CloudABI datatypes and create a system call table. CloudABI is a pure capability-based runtime environment for UNIX. It works similar to Capsicum, except that processes already run in capabilities mode on startup. All functionality that conflicts with this model has been omitted, making it a compact binary interface that can be supported by other operating systems without too much effort. CloudABI is 'secure by default'; the idea is that it should be safe to run arbitrary third-party binaries without requiring any explicit hardware virtualization (Bhyve) or namespace virtualization (Jails). The rights of an application are purely determined by the set of file descriptors that you grant it on startup. The datatypes and constants used by CloudABI's C library (cloudlibc) are defined in separate files called syscalldefs_mi.h (pointer size independent) and syscalldefs_md.h (pointer size dependent). We import these files in sys/contrib/cloudabi and wrap around them in cloudabi*_syscalldefs.h. We then add stubs for all of the system calls in sys/compat/cloudabi or sys/compat/cloudabi64, depending on whether the system call depends on the pointer size. We only have nine system calls that depend on the pointer size. If we ever want to support 32-bit binaries, we can simply add sys/compat/cloudabi32 and implement these nine system calls again. The next step is to send in code reviews for the individual system call implementations, but also add a sysentvec, to allow CloudABI executabled to be started through execve(). More information about CloudABI: - GitHub: https://github.com/NuxiNL/cloudlibc - Talk at BSDCan: https://www.youtube.com/watch?v=SVdF84x1EdA Differential Revision: https://reviews.freebsd.org/D2848 Reviewed by: emaste, brooks Obtained from: https://github.com/NuxiNL/freebsd
2015-07-09 07:20:15 +00:00
$FreeBSD$
; System call table for CloudABI.
;
; All system calls that do not use any machine-dependent data types are
; prefixed with cloudabi_sys_. The others are called cloudabi64_sys_.
#include <sys/sysent.h>
#include <sys/sysproto.h>
#include <compat/cloudabi64/cloudabi64_syscalldefs.h>
#include <compat/cloudabi64/cloudabi64_proto.h>
0 AUE_NULL STD { cloudabi_timestamp_t \
cloudabi_sys_clock_res_get( \
cloudabi_clockid_t clock_id); }
1 AUE_NULL STD { cloudabi_timestamp_t \
cloudabi_sys_clock_time_get( \
cloudabi_clockid_t clock_id, \
cloudabi_timestamp_t precision); }
2 AUE_NULL STD { void cloudabi_sys_condvar_signal( \
cloudabi_condvar_t *condvar, \
cloudabi_mflags_t scope, \
Import the CloudABI datatypes and create a system call table. CloudABI is a pure capability-based runtime environment for UNIX. It works similar to Capsicum, except that processes already run in capabilities mode on startup. All functionality that conflicts with this model has been omitted, making it a compact binary interface that can be supported by other operating systems without too much effort. CloudABI is 'secure by default'; the idea is that it should be safe to run arbitrary third-party binaries without requiring any explicit hardware virtualization (Bhyve) or namespace virtualization (Jails). The rights of an application are purely determined by the set of file descriptors that you grant it on startup. The datatypes and constants used by CloudABI's C library (cloudlibc) are defined in separate files called syscalldefs_mi.h (pointer size independent) and syscalldefs_md.h (pointer size dependent). We import these files in sys/contrib/cloudabi and wrap around them in cloudabi*_syscalldefs.h. We then add stubs for all of the system calls in sys/compat/cloudabi or sys/compat/cloudabi64, depending on whether the system call depends on the pointer size. We only have nine system calls that depend on the pointer size. If we ever want to support 32-bit binaries, we can simply add sys/compat/cloudabi32 and implement these nine system calls again. The next step is to send in code reviews for the individual system call implementations, but also add a sysentvec, to allow CloudABI executabled to be started through execve(). More information about CloudABI: - GitHub: https://github.com/NuxiNL/cloudlibc - Talk at BSDCan: https://www.youtube.com/watch?v=SVdF84x1EdA Differential Revision: https://reviews.freebsd.org/D2848 Reviewed by: emaste, brooks Obtained from: https://github.com/NuxiNL/freebsd
2015-07-09 07:20:15 +00:00
cloudabi_nthreads_t nwaiters); }
3 AUE_NULL STD { void cloudabi_sys_fd_close( \
cloudabi_fd_t fd); }
4 AUE_NULL STD { cloudabi_fd_t cloudabi_sys_fd_create1( \
cloudabi_filetype_t type); }
5 AUE_NULL STD { void cloudabi_sys_fd_create2( \
cloudabi_filetype_t type); }
6 AUE_NULL STD { void cloudabi_sys_fd_datasync( \
cloudabi_fd_t fd); }
7 AUE_NULL STD { cloudabi_fd_t cloudabi_sys_fd_dup( \
cloudabi_fd_t from); }
8 AUE_NULL STD { cloudabi64_size_t cloudabi64_sys_fd_pread( \
cloudabi_fd_t fd, \
const cloudabi64_iovec_t *iov, \
cloudabi64_size_t iovcnt, \
cloudabi_filesize_t offset); }
9 AUE_NULL STD { cloudabi64_size_t cloudabi64_sys_fd_pwrite( \
cloudabi_fd_t fd, \
const cloudabi64_ciovec_t *iov, \
cloudabi64_size_t iovcnt, \
cloudabi_filesize_t offset); }
10 AUE_NULL STD { cloudabi64_size_t cloudabi64_sys_fd_read( \
cloudabi_fd_t fd, \
const cloudabi64_iovec_t *iov, \
cloudabi64_size_t iovcnt); }
11 AUE_NULL STD { void cloudabi_sys_fd_replace( \
cloudabi_fd_t from, \
cloudabi_fd_t to); }
12 AUE_NULL STD { cloudabi_filesize_t cloudabi_sys_fd_seek( \
cloudabi_fd_t fd, \
cloudabi_filedelta_t offset, \
cloudabi_whence_t whence); }
13 AUE_NULL STD { void cloudabi_sys_fd_stat_get( \
cloudabi_fd_t fd, \
cloudabi_fdstat_t *buf); }
14 AUE_NULL STD { void cloudabi_sys_fd_stat_put( \
cloudabi_fd_t fd, \
const cloudabi_fdstat_t *buf, \
cloudabi_fdsflags_t flags); }
15 AUE_NULL STD { void cloudabi_sys_fd_sync( \
cloudabi_fd_t fd); }
16 AUE_NULL STD { cloudabi64_size_t cloudabi64_sys_fd_write( \
cloudabi_fd_t fd, \
const cloudabi64_ciovec_t *iov, \
cloudabi64_size_t iovcnt); }
17 AUE_NULL STD { void cloudabi_sys_file_advise( \
cloudabi_fd_t fd, \
cloudabi_filesize_t offset, \
cloudabi_filesize_t len, \
cloudabi_advice_t advice); }
18 AUE_NULL STD { void cloudabi_sys_file_allocate( \
cloudabi_fd_t fd, \
cloudabi_filesize_t offset, \
cloudabi_filesize_t len); }
19 AUE_NULL STD { void cloudabi_sys_file_create( \
cloudabi_fd_t fd, \
const char *path, size_t pathlen, \
cloudabi_filetype_t type); }
20 AUE_NULL STD { void cloudabi_sys_file_link( \
cloudabi_lookup_t fd1, \
const char *path1, size_t path1len, \
cloudabi_fd_t fd2, \
const char *path2, size_t path2len); }
21 AUE_NULL STD { cloudabi_fd_t cloudabi_sys_file_open( \
cloudabi_lookup_t fd, \
const char *path, size_t pathlen, \
cloudabi_oflags_t oflags, \
const cloudabi_fdstat_t *fds); }
22 AUE_NULL STD { size_t cloudabi_sys_file_readdir( \
cloudabi_fd_t fd, \
void *buf, size_t nbyte, \
cloudabi_dircookie_t cookie); }
23 AUE_NULL STD { size_t cloudabi_sys_file_readlink( \
cloudabi_fd_t fd, \
const char *path, size_t pathlen, \
void *buf, size_t bufsize); }
24 AUE_NULL STD { void cloudabi_sys_file_rename( \
cloudabi_fd_t oldfd, \
const char *old, size_t oldlen, \
cloudabi_fd_t newfd, \
const char *new, size_t newlen); }
25 AUE_NULL STD { void cloudabi_sys_file_stat_fget( \
cloudabi_fd_t fd, \
cloudabi_filestat_t *buf); }
26 AUE_NULL STD { void cloudabi_sys_file_stat_fput( \
cloudabi_fd_t fd, \
const cloudabi_filestat_t *buf, \
cloudabi_fsflags_t flags); }
27 AUE_NULL STD { void cloudabi_sys_file_stat_get( \
cloudabi_lookup_t fd, \
const char *path, size_t pathlen, \
cloudabi_filestat_t *buf); }
28 AUE_NULL STD { void cloudabi_sys_file_stat_put( \
cloudabi_lookup_t fd, \
const char *path, size_t pathlen, \
const cloudabi_filestat_t *buf, \
cloudabi_fsflags_t flags); }
29 AUE_NULL STD { void cloudabi_sys_file_symlink( \
const char *path1, size_t path1len, \
cloudabi_fd_t fd, \
const char *path2, size_t path2len); }
30 AUE_NULL STD { void cloudabi_sys_file_unlink( \
cloudabi_fd_t fd, \
const char *path, size_t pathlen, \
cloudabi_ulflags_t flag); }
31 AUE_NULL STD { void cloudabi_sys_lock_unlock( \
cloudabi_lock_t *lock, \
cloudabi_mflags_t scope); }
Import the CloudABI datatypes and create a system call table. CloudABI is a pure capability-based runtime environment for UNIX. It works similar to Capsicum, except that processes already run in capabilities mode on startup. All functionality that conflicts with this model has been omitted, making it a compact binary interface that can be supported by other operating systems without too much effort. CloudABI is 'secure by default'; the idea is that it should be safe to run arbitrary third-party binaries without requiring any explicit hardware virtualization (Bhyve) or namespace virtualization (Jails). The rights of an application are purely determined by the set of file descriptors that you grant it on startup. The datatypes and constants used by CloudABI's C library (cloudlibc) are defined in separate files called syscalldefs_mi.h (pointer size independent) and syscalldefs_md.h (pointer size dependent). We import these files in sys/contrib/cloudabi and wrap around them in cloudabi*_syscalldefs.h. We then add stubs for all of the system calls in sys/compat/cloudabi or sys/compat/cloudabi64, depending on whether the system call depends on the pointer size. We only have nine system calls that depend on the pointer size. If we ever want to support 32-bit binaries, we can simply add sys/compat/cloudabi32 and implement these nine system calls again. The next step is to send in code reviews for the individual system call implementations, but also add a sysentvec, to allow CloudABI executabled to be started through execve(). More information about CloudABI: - GitHub: https://github.com/NuxiNL/cloudlibc - Talk at BSDCan: https://www.youtube.com/watch?v=SVdF84x1EdA Differential Revision: https://reviews.freebsd.org/D2848 Reviewed by: emaste, brooks Obtained from: https://github.com/NuxiNL/freebsd
2015-07-09 07:20:15 +00:00
32 AUE_NULL STD { void cloudabi_sys_mem_advise( \
void *addr, size_t len, \
cloudabi_advice_t advice); }
33 AUE_NULL STD { void cloudabi_sys_mem_lock( \
const void *addr, size_t len); }
34 AUE_NULL STD { void cloudabi_sys_mem_map( \
void *addr, size_t len, \
cloudabi_mprot_t prot, \
cloudabi_mflags_t flags, \
cloudabi_fd_t fd, \
cloudabi_filesize_t off); }
35 AUE_NULL STD { void cloudabi_sys_mem_protect( \
void *addr, size_t len, \
cloudabi_mprot_t prot); }
36 AUE_NULL STD { void cloudabi_sys_mem_sync( \
void *addr, size_t len, \
cloudabi_msflags_t flags); }
37 AUE_NULL STD { void cloudabi_sys_mem_unlock( \
const void *addr, size_t len); }
38 AUE_NULL STD { void cloudabi_sys_mem_unmap( \
void * addr, size_t len); }
39 AUE_NULL STD { cloudabi64_size_t cloudabi64_sys_poll( \
const cloudabi64_subscription_t *in, \
cloudabi64_event_t *out, \
cloudabi64_size_t nevents); }
Import the CloudABI datatypes and create a system call table. CloudABI is a pure capability-based runtime environment for UNIX. It works similar to Capsicum, except that processes already run in capabilities mode on startup. All functionality that conflicts with this model has been omitted, making it a compact binary interface that can be supported by other operating systems without too much effort. CloudABI is 'secure by default'; the idea is that it should be safe to run arbitrary third-party binaries without requiring any explicit hardware virtualization (Bhyve) or namespace virtualization (Jails). The rights of an application are purely determined by the set of file descriptors that you grant it on startup. The datatypes and constants used by CloudABI's C library (cloudlibc) are defined in separate files called syscalldefs_mi.h (pointer size independent) and syscalldefs_md.h (pointer size dependent). We import these files in sys/contrib/cloudabi and wrap around them in cloudabi*_syscalldefs.h. We then add stubs for all of the system calls in sys/compat/cloudabi or sys/compat/cloudabi64, depending on whether the system call depends on the pointer size. We only have nine system calls that depend on the pointer size. If we ever want to support 32-bit binaries, we can simply add sys/compat/cloudabi32 and implement these nine system calls again. The next step is to send in code reviews for the individual system call implementations, but also add a sysentvec, to allow CloudABI executabled to be started through execve(). More information about CloudABI: - GitHub: https://github.com/NuxiNL/cloudlibc - Talk at BSDCan: https://www.youtube.com/watch?v=SVdF84x1EdA Differential Revision: https://reviews.freebsd.org/D2848 Reviewed by: emaste, brooks Obtained from: https://github.com/NuxiNL/freebsd
2015-07-09 07:20:15 +00:00
40 AUE_NULL STD { void cloudabi_sys_proc_exec( \
cloudabi_fd_t fd, const void *data, \
size_t datalen, \
const cloudabi_fd_t *fds, \
size_t fdslen); }
41 AUE_NULL STD { void cloudabi_sys_proc_exit( \
cloudabi_exitcode_t rval); }
42 AUE_NULL STD { cloudabi_fd_t cloudabi_sys_proc_fork(); }
43 AUE_NULL STD { void cloudabi_sys_proc_raise( \
cloudabi_signal_t sig); }
44 AUE_NULL STD { void cloudabi_sys_random_get( \
void *buf, size_t nbyte); }
45 AUE_NULL STD { cloudabi_fd_t cloudabi_sys_sock_accept( \
cloudabi_fd_t s, \
cloudabi_sockstat_t *buf); }
46 AUE_NULL STD { void cloudabi_sys_sock_bind( \
cloudabi_fd_t s, cloudabi_fd_t fd, \
const char *path, size_t pathlen); }
47 AUE_NULL STD { void cloudabi_sys_sock_connect( \
cloudabi_fd_t s, cloudabi_fd_t fd, \
const char *path, size_t pathlen); }
48 AUE_NULL STD { void cloudabi_sys_sock_listen( \
cloudabi_fd_t s, \
cloudabi_backlog_t backlog); }
49 AUE_NULL STD { cloudabi64_size_t cloudabi64_sys_sock_recv( \
cloudabi_fd_t s, \
const cloudabi64_recv_in_t *in, \
cloudabi64_recv_out_t *out); }
50 AUE_NULL STD { cloudabi64_size_t cloudabi64_sys_sock_send( \
cloudabi_fd_t s, \
const cloudabi64_send_in_t *in, \
cloudabi64_send_out_t *out); }
51 AUE_NULL STD { void cloudabi_sys_sock_shutdown( \
cloudabi_fd_t fd, \
cloudabi_sdflags_t how); }
52 AUE_NULL STD { void cloudabi_sys_sock_stat_get( \
cloudabi_fd_t fd, \
cloudabi_sockstat_t *buf, \
cloudabi_ssflags_t flags); }
53 AUE_NULL STD { cloudabi_tid_t cloudabi64_sys_thread_create( \
cloudabi64_threadattr_t *attr); }
54 AUE_NULL STD { void cloudabi_sys_thread_exit( \
cloudabi_lock_t *lock, \
cloudabi_mflags_t scope); }
55 AUE_NULL STD { void cloudabi_sys_thread_tcb_set(void *tcb); }
Import the CloudABI datatypes and create a system call table. CloudABI is a pure capability-based runtime environment for UNIX. It works similar to Capsicum, except that processes already run in capabilities mode on startup. All functionality that conflicts with this model has been omitted, making it a compact binary interface that can be supported by other operating systems without too much effort. CloudABI is 'secure by default'; the idea is that it should be safe to run arbitrary third-party binaries without requiring any explicit hardware virtualization (Bhyve) or namespace virtualization (Jails). The rights of an application are purely determined by the set of file descriptors that you grant it on startup. The datatypes and constants used by CloudABI's C library (cloudlibc) are defined in separate files called syscalldefs_mi.h (pointer size independent) and syscalldefs_md.h (pointer size dependent). We import these files in sys/contrib/cloudabi and wrap around them in cloudabi*_syscalldefs.h. We then add stubs for all of the system calls in sys/compat/cloudabi or sys/compat/cloudabi64, depending on whether the system call depends on the pointer size. We only have nine system calls that depend on the pointer size. If we ever want to support 32-bit binaries, we can simply add sys/compat/cloudabi32 and implement these nine system calls again. The next step is to send in code reviews for the individual system call implementations, but also add a sysentvec, to allow CloudABI executabled to be started through execve(). More information about CloudABI: - GitHub: https://github.com/NuxiNL/cloudlibc - Talk at BSDCan: https://www.youtube.com/watch?v=SVdF84x1EdA Differential Revision: https://reviews.freebsd.org/D2848 Reviewed by: emaste, brooks Obtained from: https://github.com/NuxiNL/freebsd
2015-07-09 07:20:15 +00:00
56 AUE_NULL STD { void cloudabi_sys_thread_yield(); }
57 AUE_NULL STD { cloudabi64_size_t cloudabi64_sys_poll_fd( \
cloudabi_fd_t fd, \
const cloudabi64_subscription_t *in, \
cloudabi64_size_t nin, \
cloudabi64_event_t *out, \
cloudabi64_size_t nout, \
const cloudabi64_subscription_t *timeout); }