af8adb5b79
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
16 lines
524 B
Plaintext
16 lines
524 B
Plaintext
# $FreeBSD$
|
|
sysnames="cloudabi64_syscalls.c"
|
|
sysproto="cloudabi64_proto.h"
|
|
sysproto_h=_CLOUDABI64_SYSPROTO_H_
|
|
syshdr="cloudabi64_syscall.h"
|
|
syssw="cloudabi64_sysent.c"
|
|
sysmk="/dev/null"
|
|
syscallprefix="CLOUDABI64_SYS_"
|
|
switchname="cloudabi64_sysent"
|
|
namesname="cloudabi64_syscallnames"
|
|
systrace="cloudabi64_systrace_args.c"
|
|
|
|
# Allow all system calls in capabilities mode. Extract the names of the
|
|
# system calls from syscalls.master.
|
|
capenabled=`sed -n -e 's/.*\<\(cloudabi[0-9]*_sys_[a-z0-9_]*\)\>.*/\1/p' $1 | tr '\n' ','`
|