Skip to content

Commit

Permalink
add rudimentary linux syscall support
Browse files Browse the repository at this point in the history
  • Loading branch information
cetio committed May 14, 2024
1 parent 3d829e8 commit cee4b13
Showing 1 changed file with 350 additions and 0 deletions.
350 changes: 350 additions & 0 deletions rt/sys.fn
Original file line number Diff line number Diff line change
@@ -0,0 +1,350 @@
module rt.sys;

if (__x86 || __x86_64)
public const tagged SCID
{
read;
write;
open;
close;
stat;
fstat;
lstat;
poll;
lseek;
mmap;
mprotect;
munmap;
brk;
rt_sigaction;
rt_sigprocmask;
rt_sigreturn;
ioctl;
pread64;
pwrite64;
readv;
writev;
access;
pipe;
select;
sched_yield;
mremap;
msync;
mincore;
madvise;
shmget;
shmat;
shmctl;
dup;
dup2;
pause;
nanosleep;
getitimer;
alarm;
setitimer;
getpid;
sendfile;
socket;
connect;
accept;
sentto;
recvfrom;
sendmsg;
recvmsg;
shutdown;
bind;
listen;
getsockname;
getpeername;
socketpair;
setsockopt;
getsockopt;
clone;
fork;
vfork;
execve;
exit;
wait4;
kill;
uname;
semget;
semop;
semctl;
shmdt;
msgget;
msgsnd;
msgrcv;
msgctl;
fcntl;
flock;
fsync;
fdatasync;
truncate;
ftruncate;
getdents;
getcwd;
chdir;
fchdir;
rename;
mkdir;
rmdir;
creat;
link;
unlink;
symlink;
readlink;
chmod;
fchmod;
chown;
fchown;
lchown;
umask;
gettimeofday;
getrlimit;
getrusage;
sysinfo;
times;
ptrace;
getuid;
syslog;
getgid;
setuid;
setgid;
geteuid;
getegid;
setpgid;
getppid;
getpgrp;
setsid;
setreuid;
setregid;
getgroups;
setgroups;
setresuid;
getresuid;
setresgid;
getresgid;
getpgid;
setfsuid;
setfsgid;
getsid;
capget;
capset;
rt_sigpending;
rt_sigtimedwait;
rt_sigqueueinfo;
rt_sigsuspend;
sigaltstack;
utime;
mknod;
uselib;
personality;
ustat;
statfs;
fstatfs;
sysfs;
getpriority;
setpriority;
sched_setparam;
sched_getparam;
sched_setscheduler;
sched_getscheduler;
sched_get_priority_max;
sched_get_priority_min;
sched_rr_get_interval;
mlock;
munlock;
mlockall;
munlockall;
vhangup;
modify_ldt;
pivot_root;
_sysctl;
prctl;
arch_prctl;
adjtimex;
setrlimit;
chroot;
sync;
acct;
settimeofday;
mount;
umount2;
swapon;
swapoff;
reboot;
sethostname;
setdomainname;
iopl;
ioperm;
create_module;
init_module;
delete_module;
get_kernel_syms;
query_module;
quotactl;
nfsservctl;
getpmsg;
putpmsg;
afs_syscall;
tuxcall;
security;
gettid;
readahead;
setxattr;
lsetxattr;
fsetxattr;
getxattr;
lgetxattr;
fgetxattr;
listxattr;
llistxattr;
flistxattr;
removexattr;
lremovexattr;
fremovexattr;
tkill;
time;
futex;
sched_setaffinity;
sched_getaffinity;
set_thread_area;
io_setup;
io_destroy;
io_getevents;
io_submit;
io_cancel;
get_thread_area;
lookup_dcookie;
epoll_create;
epoll_ctl_old;
epoll_wait_old;
remap_file_pages;
getdents64;
set_tid_address;
restart_syscall;
semtimedop;
fadvise64;
timer_create;
timer_settime;
timer_gettime;
timer_getoverrun;
timer_delete;
clock_settime;
clock_gettime;
clock_getres;
clock_nanosleep;
exit_group;
epoll_wait;
epoll_ctl;
tgkill;
utimes;
vserver;
mbind;
set_mempolicy;
get_mempolicy;
mq_open;
mq_unlink;
mq_timedsend;
mq_timedreceive;
mq_notify;
mq_getsetattr;
kexec_load;
waitid;
add_key;
request_key;
keyctl;
ioprio_set;
ioprio_get;
inotify_init;
inotify_add_watch;
inotify_rm_watch;
migrate_pages;
openat;
mkdirat;
mknodat;
fchownat;
futimesat;
newfstatat;
unlinkat;
renameat;
linkat;
symlinkat;
readlinkat;
fchmodat;
faccessat;
pselect6;
ppoll;
unshare;
set_robust_list;
get_robust_list;
splice;
tee;
sync_file_range;
vmsplice;
move_pages;
utimensat;
epoll_pwait;
signalfd;
timerfd_create;
eventfd;
fallocate;
timerfd_settime;
timerfd_gettime;
accept4;
signalfd4;
eventfd2;
epoll_create1;
dup3;
pipe2;
inotify_init1;
preadv;
pwritev;
rt_tgsigqueueinfo;
perf_event_open;
recvmmsg;
fanotify_init;
fanotify_mark;
prlimit64;
name_to_handle_at;
open_by_handle_at;
clock_adjtime;
syncfs;
sendmmsg;
setns;
getcpu;
process_vm_readv;
process_vm_writev;
kcmp;
finit_module;
sched_setattr;
sched_getattr;
renameat2;
seccomp;
getrandom;
memfd_create;
kexec_file_load;
bpf;
execveat;
userfaultfd;
membarrier;
mlock2;
copy_file_range;
preadv2;
pwritev2;
pkey_mprotect;
pkey_alloc;
pkey_free;
statx;
io_pgetevents;
rseq;
pkey_mprotect2;
}

void __syscall(ARGS...)(SCID id, ARGS args) trusted;
{
__asm(
syscall(none, id, unroll args);
);
return;
}

0 comments on commit cee4b13

Please sign in to comment.