mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
8178e1f7da
Added more array support that depends on malloc. Added string clone (that uses malloc). Added test for it. Eliminated stack allocated buffers from most of the unit checks.
758 lines
30 KiB
V
758 lines
30 KiB
V
module builtin
|
|
|
|
pub enum linux_mem {
|
|
page_size = 4096
|
|
}
|
|
|
|
pub enum wp_sys {
|
|
wnohang = 0x00000001
|
|
wuntraced = 0x00000002
|
|
wstopped = 0x00000002
|
|
wexited = 0x00000004
|
|
wcontinued = 0x00000008
|
|
wnowait = 0x01000000 // don't reap, just poll status.
|
|
__wnothread = 0x20000000 // don't wait on children of other threads in this group
|
|
__wall = 0x40000000 // wait on all children, regardless of type
|
|
__wclone = 0x80000000 // wait only on non-sigchld children
|
|
}
|
|
|
|
// First argument to waitid:
|
|
pub enum wi_which {
|
|
p_all = 0
|
|
p_pid = 1
|
|
p_pgid = 2
|
|
}
|
|
|
|
pub enum wi_si_code {
|
|
cld_exited = 1 // child has exited
|
|
cld_killed = 2 // child was killed
|
|
cld_dumped = 3 // child terminated abnormally
|
|
cld_trapped = 4 // traced child has trapped
|
|
cld_stopped = 5 // child has stopped
|
|
cld_continued = 6 // stopped child has continued
|
|
}
|
|
|
|
/* Paraphrased from "man 2 waitid" on Linux
|
|
|
|
Upon successful return, waitid() fills in the
|
|
following fields of the siginfo_t structure
|
|
pointed to by infop:
|
|
|
|
si_pid, offset 0x10, int index 0x04:
|
|
The process ID of the child.
|
|
|
|
si_uid: offset 0x14, int index 0x05
|
|
The real user ID of the child.
|
|
|
|
si_signo: offset 0x00, int index 0x00
|
|
Always set to SIGCHLD.
|
|
|
|
si_status: ofset 0x18, int index 0x06
|
|
1 the exit status of the child, as given to _exit(2)
|
|
(or exit(3)) (sc_sys.cld_exited)
|
|
2 the signal that caused the child to terminate, stop,
|
|
or continue.
|
|
3 The si_code field can be used to determine how to
|
|
interpret this field.
|
|
|
|
si_code, set to one of (enum wi_si_code), offset 0x08, int index 0x02:
|
|
CLD_EXITED (child called _exit(2));
|
|
CLD_KILLED (child killed by signal);
|
|
CLD_DUMPED (child killed by signal, and dumped core);
|
|
CLD_STOPPED (child stopped by signal);
|
|
CLD_TRAPPED (traced child has trapped);
|
|
CLD_CONTINUED (child continued by SIGCONT).
|
|
*/
|
|
|
|
pub enum sig_index {
|
|
si_signo = 0x00
|
|
si_code = 0x02
|
|
si_pid = 0x04
|
|
si_uid = 0x05
|
|
si_status = 0x06
|
|
si_size = 0x80
|
|
}
|
|
|
|
pub enum signo {
|
|
sigint = 2 // Interactive attention signal.
|
|
sigill = 4 // Illegal instruction.
|
|
sigabrt = 6 // Abnormal termination.
|
|
sigfpe = 8 // Erroneous arithmetic operation.
|
|
sigsegv = 11 // Invalid access to storage.
|
|
sigterm = 15 // Termination request.
|
|
|
|
sighup = 1 // Hangup.
|
|
sigquit = 3 // Quit.
|
|
sigtrap = 5 // Trace/breakpoint trap.
|
|
sigkill = 9 // Killed.
|
|
sigpipe = 13 // Broken pipe.
|
|
sigalrm = 14 // Alarm clock.
|
|
|
|
sigttin = 21 // Background read from control terminal.
|
|
sigttou = 22 // Background write to control terminal.
|
|
sigxcpu = 24 // CPU time limit exceeded.
|
|
sigxfsz = 25 // File size limit exceeded.
|
|
sigvtalrm = 26 // Virtual timer expired.
|
|
sigprof = 27 // Profiling timer expired.
|
|
|
|
sigbus = 7
|
|
sigusr1 = 10
|
|
sigusr2 = 12
|
|
sigchld = 17
|
|
sigcont = 18
|
|
sigstop = 19
|
|
sigtstp = 20
|
|
sigurg = 23
|
|
sigpoll = 29
|
|
sigsys = 31
|
|
}
|
|
|
|
|
|
pub enum fcntl {
|
|
fd_cloexec = 0x00000001
|
|
f_dupfd = 0x00000000
|
|
f_exlck = 0x00000004
|
|
f_getfd = 0x00000001
|
|
f_getfl = 0x00000003
|
|
f_getlk = 0x00000005
|
|
f_getlk64 = 0x0000000c
|
|
f_getown = 0x00000009
|
|
f_getowner_uids = 0x00000011
|
|
f_getown_ex = 0x00000010
|
|
f_getsig = 0x0000000b
|
|
f_ofd_getlk = 0x00000024
|
|
f_ofd_setlk = 0x00000025
|
|
f_ofd_setlkw = 0x00000026
|
|
f_owner_pgrp = 0x00000002
|
|
f_owner_pid = 0x00000001
|
|
f_owner_tid = 0x00000000
|
|
f_rdlck = 0x00000000
|
|
f_setfd = 0x00000002
|
|
f_setfl = 0x00000004
|
|
f_setlk = 0x00000006
|
|
f_setlk64 = 0x0000000d
|
|
f_setlkw = 0x00000007
|
|
f_setlkw64 = 0x0000000e
|
|
f_setown = 0x00000008
|
|
f_setown_ex = 0x0000000f
|
|
f_setsig = 0x0000000a
|
|
f_shlck = 0x00000008
|
|
f_unlck = 0x00000002
|
|
f_wrlck = 0x00000001
|
|
lock_ex = 0x00000002
|
|
lock_mand = 0x00000020
|
|
lock_nb = 0x00000004
|
|
lock_read = 0x00000040
|
|
lock_rw = 0x000000c0
|
|
lock_sh = 0x00000001
|
|
lock_un = 0x00000008
|
|
lock_write = 0x00000080
|
|
o_accmode = 0x00000003
|
|
o_append = 0x00000400
|
|
o_cloexec = 0x00080000
|
|
o_creat = 0x00000040
|
|
o_direct = 0x00004000
|
|
o_directory = 0x00010000
|
|
o_dsync = 0x00001000
|
|
o_excl = 0x00000080
|
|
o_largefile = 0x00008000
|
|
o_ndelay = 0x00000800
|
|
o_noatime = 0x00040000
|
|
o_noctty = 0x00000100
|
|
o_nofollow = 0x00020000
|
|
o_nonblock = 0x00000800
|
|
o_path = 0x00200000
|
|
o_rdonly = 0x00000000
|
|
o_rdwr = 0x00000002
|
|
o_trunc = 0x00000200
|
|
o_wronly = 0x00000001
|
|
}
|
|
|
|
pub enum errno {
|
|
enoerror = 0x00000000
|
|
e2big = 0x00000007
|
|
eacces = 0x0000000d
|
|
eagain = 0x0000000b
|
|
ebadf = 0x00000009
|
|
ebusy = 0x00000010
|
|
echild = 0x0000000a
|
|
edom = 0x00000021
|
|
eexist = 0x00000011
|
|
efault = 0x0000000e
|
|
efbig = 0x0000001b
|
|
eintr = 0x00000004
|
|
einval = 0x00000016
|
|
eio = 0x00000005
|
|
eisdir = 0x00000015
|
|
emfile = 0x00000018
|
|
emlink = 0x0000001f
|
|
enfile = 0x00000017
|
|
enodev = 0x00000013
|
|
enoent = 0x00000002
|
|
enoexec = 0x00000008
|
|
enomem = 0x0000000c
|
|
enospc = 0x0000001c
|
|
enotblk = 0x0000000f
|
|
enotdir = 0x00000014
|
|
enotty = 0x00000019
|
|
enxio = 0x00000006
|
|
eperm = 0x00000001
|
|
epipe = 0x00000020
|
|
erange = 0x00000022
|
|
erofs = 0x0000001e
|
|
espipe = 0x0000001d
|
|
esrch = 0x00000003
|
|
etxtbsy = 0x0000001a
|
|
exdev = 0x00000012
|
|
}
|
|
|
|
pub enum mm_prot {
|
|
prot_read = 0x1
|
|
prot_write = 0x2
|
|
prot_exec = 0x4
|
|
prot_none = 0x0
|
|
prot_growsdown = 0x01000000
|
|
prot_growsup = 0x02000000
|
|
}
|
|
|
|
pub enum map_flags {
|
|
map_shared = 0x01
|
|
map_private = 0x02
|
|
map_shared_validate = 0x03
|
|
map_type = 0x0f
|
|
map_fixed = 0x10
|
|
map_file = 0x00
|
|
map_anonymous = 0x20
|
|
map_anon = 0x20
|
|
map_huge_shift = 26
|
|
map_huge_mask = 0x3f
|
|
}
|
|
|
|
fn do_not_call_me_asm_keeper0() {
|
|
unsafe {
|
|
asm {
|
|
"\n"
|
|
"ret\n"
|
|
""
|
|
".intel_syntax noprefix\n"
|
|
".globl _start, sys_call0\n"
|
|
".globl sys_call1, sys_call2, sys_call3\n"
|
|
".globl sys_call4, sys_call5, sys_call6\n"
|
|
""
|
|
"_start:\n"
|
|
"xor rbp,rbp\n"
|
|
"pop rdi\n"
|
|
"mov rsi,rsp\n"
|
|
"and rsp,-16\n"
|
|
"call main\n"
|
|
"mov rdi,rax\n" /* syscall param 1 = rax (ret value of main) */
|
|
"mov rax,60\n" /* SYS_exit */
|
|
"syscall\n"
|
|
""
|
|
// should never be reached, but if the OS somehow fails to kill us,
|
|
// it will cause a segmentation fault
|
|
"ret\n"
|
|
"sys_call0:\n"
|
|
"mov rax,rdi\n"
|
|
"syscall\n"
|
|
"ret\n"
|
|
""
|
|
"sys_call1:\n"
|
|
"mov rax,rdi\n"
|
|
"mov rdi,rsi\n"
|
|
"syscall\n"
|
|
"ret\n"
|
|
""
|
|
"sys_call2:\n"
|
|
"mov rax,rdi\n"
|
|
"mov rdi,rsi\n"
|
|
"mov rsi,rdx\n"
|
|
"syscall\n"
|
|
"ret\n"
|
|
""
|
|
"sys_call3:\n"
|
|
"mov rax,rdi\n"
|
|
"mov rdi,rsi\n"
|
|
"mov rsi,rdx\n"
|
|
"mov rdx,rcx\n"
|
|
"syscall\n"
|
|
"ret\n"
|
|
""
|
|
"sys_call4:\n"
|
|
"mov rax,rdi\n"
|
|
"mov rdi,rsi\n"
|
|
"mov rsi,rdx\n"
|
|
"mov rdx,rcx\n"
|
|
"mov r10,r8\n"
|
|
"syscall\n"
|
|
"ret\n"
|
|
""
|
|
"sys_call5:\n"
|
|
"mov rax,rdi\n"
|
|
"mov rdi,rsi\n"
|
|
"mov rsi,rdx\n"
|
|
"mov rdx,rcx\n"
|
|
"mov r10,r8\n"
|
|
"mov r8,r9\n"
|
|
"syscall\n"
|
|
"ret\n"
|
|
""
|
|
"sys_call6:\n"
|
|
"mov rax,rdi\n"
|
|
"mov rdi,rsi\n"
|
|
"mov rsi,rdx\n"
|
|
"mov rdx,rcx\n"
|
|
"mov r10,r8\n"
|
|
"mov r8,r9\n"
|
|
"mov r9, [rsp+8]\n"
|
|
"syscall\n"
|
|
"ret\n"
|
|
""
|
|
".att_syntax \n"
|
|
}
|
|
}
|
|
}
|
|
|
|
fn sys_call0(scn u64) u64
|
|
fn sys_call1(scn, arg1 u64) u64
|
|
fn sys_call2(scn, arg1, arg2 u64) u64
|
|
fn sys_call3(scn, arg1, arg2, arg3 u64) u64
|
|
fn sys_call4(scn, arg1, arg2, arg3, arg4 u64) u64
|
|
fn sys_call5(scn, arg1, arg2, arg3, arg4, arg5 u64) u64
|
|
fn sys_call6(scn, arg1, arg2, arg3, arg4, arg5, arg6 u64) u64
|
|
|
|
|
|
fn split_int_errno(rc_in u64) (i64, errno) {
|
|
rc := i64(rc_in)
|
|
if rc < 0 {
|
|
return i64(-1), errno(-rc)
|
|
}
|
|
return rc, errno.enoerror
|
|
}
|
|
|
|
// 0 sys_read unsigned int fd char *buf size_t count
|
|
pub fn sys_read (fd i64, buf byteptr, count u64) (i64, errno) {
|
|
return split_int_errno(sys_call3(0, u64(fd), u64(buf), count))
|
|
}
|
|
|
|
// 1 sys_write unsigned int fd, const char *buf, size_t count
|
|
pub fn sys_write(fd i64, buf byteptr, count u64) (i64, errno) {
|
|
return split_int_errno(sys_call3(1, u64(fd), u64(buf), count))
|
|
}
|
|
|
|
pub fn sys_open(filename byteptr, flags fcntl, mode int) (i64, errno) {
|
|
//2 sys_open const char *filename int flags int mode
|
|
return split_int_errno(sys_call3(2, u64(filename), u64(flags), u64(mode)))
|
|
}
|
|
|
|
pub fn sys_close(fd i64) errno {
|
|
// 3 sys_close unsigned int fd
|
|
return errno(-i64(sys_call1(3, u64(fd))))
|
|
}
|
|
|
|
// 9 sys_mmap unsigned long addr unsigned long len unsigned long prot unsigned long flags unsigned long fd unsigned long off
|
|
pub fn sys_mmap(addr byteptr, len u64, prot mm_prot, flags map_flags, fildes u64, off u64) (byteptr, errno) {
|
|
rc := sys_call6(9, u64(addr), len, u64(prot), u64(flags), fildes, off)
|
|
a, e := split_int_errno(rc)
|
|
return byteptr(a), e
|
|
}
|
|
|
|
pub fn sys_munmap(addr voidptr, len u64) errno {
|
|
// 11 sys_munmap unsigned long addr size_t len
|
|
return errno(-sys_call2(11, u64(addr), len))
|
|
}
|
|
|
|
// 22 sys_pipe int *filedes
|
|
pub fn sys_pipe(filedes intptr) errno {
|
|
return errno(sys_call1(22, u64(filedes)))
|
|
}
|
|
|
|
// 24 sys_sched_yield
|
|
pub fn sys_sched_yield() errno {
|
|
return errno(sys_call0(24))
|
|
}
|
|
|
|
pub fn sys_madvise(addr voidptr, len u64, advice int) errno {
|
|
// 28 sys_madvise unsigned long start size_t len_in int behavior
|
|
return errno(sys_call3(28, u64(addr), len, u64(advice)))
|
|
}
|
|
|
|
// 39 sys_getpid
|
|
pub fn sys_getpid() int {
|
|
return int(sys_call0(39))
|
|
}
|
|
|
|
// 57 sys_fork
|
|
pub fn sys_fork() int {
|
|
return int(sys_call0(57))
|
|
}
|
|
|
|
// 58 sys_vfork
|
|
pub fn sys_vfork() int {
|
|
return int(sys_call0(58))
|
|
}
|
|
|
|
// 33 sys_dup2 unsigned int oldfd unsigned int newfd
|
|
pub fn sys_dup2 (oldfd, newfd int) (i64, errno) {
|
|
return split_int_errno(sys_call2(33, u64(oldfd),u64(newfd)))
|
|
}
|
|
|
|
|
|
//59 sys_execve const char *filename const char *const argv[] const char *const envp[]
|
|
//pub fn sys_execve(filename byteptr, argv []byteptr, envp []byteptr) int {
|
|
// return sys_call3(59, filename, argv, envp)
|
|
//}
|
|
|
|
|
|
// 60 sys_exit int error_code
|
|
pub fn sys_exit (ec int) {
|
|
sys_call1(60, u64(ec))
|
|
}
|
|
|
|
// 102 sys_getuid
|
|
pub fn sys_getuid() int {
|
|
return int(sys_call0(102))
|
|
}
|
|
|
|
// 247 sys_waitid int which pid_t upid struct siginfo *infop int options struct rusage *ru
|
|
pub fn sys_waitid (which wi_which, pid int, infop intptr, options wp_sys, ru voidptr) errno {
|
|
return errno(sys_call5(247, u64(which), u64(pid), u64(infop), u64(options), u64(ru)))
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
A few years old, but still relevant
|
|
https://blog.rchapman.org/posts/Linux_System_Call_Table_for_x86_64/
|
|
|
|
>0 sys_read unsigned int fd char *buf size_t count
|
|
>1 sys_write unsigned int fd const char *buf size_t count
|
|
>2 sys_open const char *filename int flags int mode
|
|
>3 sys_close unsigned int fd
|
|
4 sys_stat const char *filename struct stat *statbuf
|
|
5 sys_fstat unsigned int fd struct stat *statbuf
|
|
6 sys_lstat fconst char *filename struct stat *statbuf
|
|
7 sys_poll struct poll_fd *ufds unsigned int nfds long timeout_msecs
|
|
8 sys_lseek unsigned int fd off_t offset unsigned int origin
|
|
>9 sys_mmap unsigned long addr unsigned long len unsigned long prot unsigned long flags unsigned long fd unsigned long off
|
|
10 sys_mprotect unsigned long start size_t len unsigned long prot
|
|
>11 sys_munmap unsigned long addr size_t len
|
|
12 sys_brk unsigned long brk
|
|
13 sys_rt_sigaction int sig const struct sigaction *act struct sigaction *oact size_t sigsetsize
|
|
14 sys_rt_sigprocmask int how sigset_t *nset sigset_t *oset size_t sigsetsize
|
|
15 sys_rt_sigreturn unsigned long __unused
|
|
16 sys_ioctl unsigned int fd unsigned int cmd unsigned long arg
|
|
17 sys_pread64 unsigned long fd char *buf size_t count loff_t pos
|
|
18 sys_pwrite64 unsigned int fd const char *buf size_t count loff_t pos
|
|
19 sys_readv unsigned long fd const struct iovec *vec unsigned long vlen
|
|
20 sys_writev unsigned long fd const struct iovec *vec unsigned long vlen
|
|
21 sys_access const char *filename int mode
|
|
>22 sys_pipe int *filedes
|
|
23 sys_select int n fd_set *inp fd_set *outp fd_set*exp struct timeval *tvp
|
|
>24 sys_sched_yield
|
|
25 sys_mremap unsigned long addr unsigned long old_len unsigned long new_len unsigned long flags unsigned long new_addr
|
|
26 sys_msync unsigned long start size_t len int flags
|
|
27 sys_mincore unsigned long start size_t len unsigned char *vec
|
|
>28 sys_madvise unsigned long start size_t len_in int behavior
|
|
29 sys_shmget key_t key size_t size int shmflg
|
|
30 sys_shmat int shmid char *shmaddr int shmflg
|
|
31 sys_shmctl int shmid int cmd struct shmid_ds *buf
|
|
32 sys_dup unsigned int fildes
|
|
33 sys_dup2 unsigned int oldfd unsigned int newfd
|
|
34 sys_pause
|
|
35 sys_nanosleep struct timespec *rqtp struct timespec *rmtp
|
|
36 sys_getitimer int which struct itimerval *value
|
|
37 sys_alarm unsigned int seconds
|
|
38 sys_setitimer int which struct itimerval *value struct itimerval *ovalue
|
|
>39 sys_getpid
|
|
40 sys_sendfile int out_fd int in_fd off_t *offset size_t count
|
|
41 sys_socket int family int type int protocol
|
|
42 sys_connect int fd struct sockaddr *uservaddr int addrlen
|
|
43 sys_accept int fd struct sockaddr *upeer_sockaddr int *upeer_addrlen
|
|
44 sys_sendto int fd void *buff size_t len unsigned flags struct sockaddr *addr int addr_len
|
|
45 sys_recvfrom int fd void *ubuf size_t size unsigned flags struct sockaddr *addr int *addr_len
|
|
46 sys_sendmsg int fd struct msghdr *msg unsigned flags
|
|
47 sys_recvmsg int fd struct msghdr *msg unsigned int flags
|
|
48 sys_shutdown int fd int how
|
|
49 sys_bind int fd struct sokaddr *umyaddr int addrlen
|
|
50 sys_listen int fd int backlog
|
|
51 sys_getsockname int fd struct sockaddr *usockaddr int *usockaddr_len
|
|
52 sys_getpeername int fd struct sockaddr *usockaddr int *usockaddr_len
|
|
53 sys_socketpair int family int type int protocol int *usockvec
|
|
54 sys_setsockopt int fd int level int optname char *optval int optlen
|
|
55 sys_getsockopt int fd int level int optname char *optval int *optlen
|
|
56 sys_clone unsigned long clone_flags unsigned long newsp void *parent_tid void *child_tid
|
|
>57 sys_fork
|
|
>58 sys_vfork
|
|
>59 sys_execve const char *filename const char *const argv[] const char *const envp[]
|
|
>60 sys_exit int error_code
|
|
61 sys_wait4 pid_t upid int *stat_addr int options struct rusage *ru
|
|
62 sys_kill pid_t pid int sig
|
|
63 sys_uname struct old_utsname *name
|
|
64 sys_semget key_t key int nsems int semflg
|
|
65 sys_semop int semid struct sembuf *tsops unsigned nsops
|
|
66 sys_semctl int semid int semnum int cmd union semun arg
|
|
67 sys_shmdt char *shmaddr
|
|
68 sys_msgget key_t key int msgflg
|
|
69 sys_msgsnd int msqid struct msgbuf *msgp size_t msgsz int msgflg
|
|
70 sys_msgrcv int msqid struct msgbuf *msgp size_t msgsz long msgtyp int msgflg
|
|
71 sys_msgctl int msqid int cmd struct msqid_ds *buf
|
|
72 sys_fcntl unsigned int fd unsigned int cmd unsigned long arg
|
|
73 sys_flock unsigned int fd unsigned int cmd
|
|
74 sys_fsync unsigned int fd
|
|
75 sys_fdatasync unsigned int fd
|
|
76 sys_truncate const char *path long length
|
|
77 sys_ftruncate unsigned int fd unsigned long length
|
|
78 sys_getdents unsigned int fd struct linux_dirent *dirent unsigned int count
|
|
79 sys_getcwd char *buf unsigned long size
|
|
80 sys_chdir const char *filename
|
|
81 sys_fchdir unsigned int fd
|
|
82 sys_rename const char *oldname const char *newname
|
|
83 sys_mkdir const char *pathname int mode
|
|
84 sys_rmdir const char *pathname
|
|
85 sys_creat const char *pathname int mode
|
|
86 sys_link const char *oldname const char *newname
|
|
87 sys_unlink const char *pathname
|
|
88 sys_symlink const char *oldname const char *newname
|
|
89 sys_readlink const char *path char *buf int bufsiz
|
|
90 sys_chmod const char *filename mode_t mode
|
|
91 sys_fchmod unsigned int fd mode_t mode
|
|
92 sys_chown const char *filename uid_t user gid_t group
|
|
93 sys_fchown unsigned int fd uid_t user gid_t group
|
|
94 sys_lchown const char *filename uid_t user gid_t group
|
|
95 sys_umask int mask
|
|
96 sys_gettimeofday struct timeval *tv struct timezone *tz
|
|
97 sys_getrlimit unsigned int resource struct rlimit *rlim
|
|
98 sys_getrusage int who struct rusage *ru
|
|
99 sys_sysinfo struct sysinfo *info
|
|
100 sys_times struct sysinfo *info
|
|
101 sys_ptrace long request long pid unsigned long addr unsigned long data
|
|
>102 sys_getuid
|
|
103 sys_syslog int type char *buf int len
|
|
104 sys_getgid
|
|
105 sys_setuid uid_t uid
|
|
106 sys_setgid gid_t gid
|
|
107 sys_geteuid
|
|
108 sys_getegid
|
|
109 sys_setpgid pid_t pid pid_t pgid
|
|
110 sys_getppid
|
|
111 sys_getpgrp
|
|
112 sys_setsid
|
|
113 sys_setreuid uid_t ruid uid_t euid
|
|
114 sys_setregid gid_t rgid gid_t egid
|
|
115 sys_getgroups int gidsetsize gid_t *grouplist
|
|
116 sys_setgroups int gidsetsize gid_t *grouplist
|
|
117 sys_setresuid uid_t *ruid uid_t *euid uid_t *suid
|
|
118 sys_getresuid uid_t *ruid uid_t *euid uid_t *suid
|
|
119 sys_setresgid gid_t rgid gid_t egid gid_t sgid
|
|
120 sys_getresgid gid_t *rgid gid_t *egid gid_t *sgid
|
|
121 sys_getpgid pid_t pid
|
|
122 sys_setfsuid uid_t uid
|
|
123 sys_setfsgid gid_t gid
|
|
124 sys_getsid pid_t pid
|
|
125 sys_capget cap_user_header_t header cap_user_data_t dataptr
|
|
126 sys_capset cap_user_header_t header const cap_user_data_t data
|
|
127 sys_rt_sigpending sigset_t *set size_t sigsetsize
|
|
128 sys_rt_sigtimedwait const sigset_t *uthese siginfo_t *uinfo const struct timespec *uts size_t sigsetsize
|
|
129 sys_rt_sigqueueinfo pid_t pid int sig siginfo_t *uinfo
|
|
130 sys_rt_sigsuspend sigset_t *unewset size_t sigsetsize
|
|
131 sys_sigaltstack const stack_t *uss stack_t *uoss
|
|
132 sys_utime char *filename struct utimbuf *times
|
|
133 sys_mknod const char *filename umode_t mode unsigned dev
|
|
134 sys_uselib NOT IMPLEMENTED
|
|
135 sys_personality unsigned int personality
|
|
136 sys_ustat unsigned dev struct ustat *ubuf
|
|
137 sys_statfs const char *pathname struct statfs *buf
|
|
138 sys_fstatfs unsigned int fd struct statfs *buf
|
|
139 sys_sysfs int option unsigned long arg1 unsigned long arg2
|
|
140 sys_getpriority int which int who
|
|
141 sys_setpriority int which int who int niceval
|
|
142 sys_sched_setparam pid_t pid struct sched_param *param
|
|
143 sys_sched_getparam pid_t pid struct sched_param *param
|
|
144 sys_sched_setscheduler pid_t pid int policy struct sched_param *param
|
|
145 sys_sched_getscheduler pid_t pid
|
|
146 sys_sched_get_priority_max int policy
|
|
147 sys_sched_get_priority_min int policy
|
|
148 sys_sched_rr_get_interval pid_t pid struct timespec *interval
|
|
149 sys_mlock unsigned long start size_t len
|
|
150 sys_munlock unsigned long start size_t len
|
|
151 sys_mlockall int flags
|
|
152 sys_munlockall
|
|
153 sys_vhangup
|
|
154 sys_modify_ldt int func void *ptr unsigned long bytecount
|
|
155 sys_pivot_root const char *new_root const char *put_old
|
|
156 sys__sysctl struct __sysctl_args *args
|
|
157 sys_prctl int option unsigned long arg2 unsigned long arg3 unsigned long arg4 unsigned long arg5
|
|
158 sys_arch_prctl struct task_struct *task int code unsigned long *addr
|
|
159 sys_adjtimex struct timex *txc_p
|
|
160 sys_setrlimit unsigned int resource struct rlimit *rlim
|
|
161 sys_chroot const char *filename
|
|
162 sys_sync
|
|
163 sys_acct const char *name
|
|
164 sys_settimeofday struct timeval *tv struct timezone *tz
|
|
165 sys_mount char *dev_name char *dir_name char *type unsigned long flags void *data
|
|
166 sys_umount2 const char *target int flags
|
|
167 sys_swapon const char *specialfile int swap_flags
|
|
168 sys_swapoff const char *specialfile
|
|
169 sys_reboot int magic1 int magic2 unsigned int cmd void *arg
|
|
170 sys_sethostname char *name int len
|
|
171 sys_setdomainname char *name int len
|
|
172 sys_iopl unsigned int level struct pt_regs *regs
|
|
173 sys_ioperm unsigned long from unsigned long num int turn_on
|
|
174 sys_create_module REMOVED IN Linux 2.6
|
|
175 sys_init_module void *umod unsigned long len const char *uargs
|
|
176 sys_delete_module const chat *name_user unsigned int flags
|
|
177 sys_get_kernel_syms REMOVED IN Linux 2.6
|
|
178 sys_query_module REMOVED IN Linux 2.6
|
|
179 sys_quotactl unsigned int cmd const char *special qid_t id void *addr
|
|
180 sys_nfsservctl NOT IMPLEMENTED
|
|
181 sys_getpmsg NOT IMPLEMENTED
|
|
182 sys_putpmsg NOT IMPLEMENTED
|
|
183 sys_afs_syscall NOT IMPLEMENTED
|
|
184 sys_tuxcall NOT IMPLEMENTED
|
|
185 sys_security NOT IMPLEMENTED
|
|
186 sys_gettid
|
|
187 sys_readahead int fd loff_t offset size_t count
|
|
188 sys_setxattr const char *pathname const char *name const void *value size_t size int flags
|
|
189 sys_lsetxattr const char *pathname const char *name const void *value size_t size int flags
|
|
190 sys_fsetxattr int fd const char *name const void *value size_t size int flags
|
|
191 sys_getxattr const char *pathname const char *name void *value size_t size
|
|
192 sys_lgetxattr const char *pathname const char *name void *value size_t size
|
|
193 sys_fgetxattr int fd const har *name void *value size_t size
|
|
194 sys_listxattr const char *pathname char *list size_t size
|
|
195 sys_llistxattr const char *pathname char *list size_t size
|
|
196 sys_flistxattr int fd char *list size_t size
|
|
197 sys_removexattr const char *pathname const char *name
|
|
198 sys_lremovexattr const char *pathname const char *name
|
|
199 sys_fremovexattr int fd const char *name
|
|
200 sys_tkill pid_t pid ing sig
|
|
201 sys_time time_t *tloc
|
|
202 sys_futex u32 *uaddr int op u32 val struct timespec *utime u32 *uaddr2 u32 val3
|
|
203 sys_sched_setaffinity pid_t pid unsigned int len unsigned long *user_mask_ptr
|
|
204 sys_sched_getaffinity pid_t pid unsigned int len unsigned long *user_mask_ptr
|
|
205 sys_set_thread_area NOT IMPLEMENTED. Use arch_prctl
|
|
206 sys_io_setup unsigned nr_events aio_context_t *ctxp
|
|
207 sys_io_destroy aio_context_t ctx
|
|
208 sys_io_getevents aio_context_t ctx_id long min_nr long nr struct io_event *events
|
|
209 sys_io_submit aio_context_t ctx_id long nr struct iocb **iocbpp
|
|
210 sys_io_cancel aio_context_t ctx_id struct iocb *iocb struct io_event *result
|
|
211 sys_get_thread_area NOT IMPLEMENTED. Use arch_prctl
|
|
212 sys_lookup_dcookie u64 cookie64 long buf long len
|
|
213 sys_epoll_create int size
|
|
214 sys_epoll_ctl_old NOT IMPLEMENTED
|
|
215 sys_epoll_wait_old NOT IMPLEMENTED
|
|
216 sys_remap_file_pages unsigned long start unsigned long size unsigned long prot unsigned long pgoff unsigned long flags
|
|
217 sys_getdents64 unsigned int fd struct linux_dirent64 *dirent unsigned int count
|
|
218 sys_set_tid_address int *tidptr
|
|
219 sys_restart_syscall
|
|
220 sys_semtimedop int semid struct sembuf *tsops unsigned nsops const struct timespec *timeout
|
|
221 sys_fadvise64 int fd loff_t offset size_t len int advice
|
|
222 sys_timer_create const clockid_t which_clock struct sigevent *timer_event_spec timer_t *created_timer_id
|
|
223 sys_timer_settime timer_t timer_id int flags const struct itimerspec *new_setting struct itimerspec *old_setting
|
|
224 sys_timer_gettime timer_t timer_id struct itimerspec *setting
|
|
225 sys_timer_getoverrun timer_t timer_id
|
|
226 sys_timer_delete timer_t timer_id
|
|
227 sys_clock_settime const clockid_t which_clock const struct timespec *tp
|
|
228 sys_clock_gettime const clockid_t which_clock struct timespec *tp
|
|
229 sys_clock_getres const clockid_t which_clock struct timespec *tp
|
|
230 sys_clock_nanosleep const clockid_t which_clock int flags const struct timespec *rqtp struct timespec *rmtp
|
|
231 sys_exit_group int error_code
|
|
232 sys_epoll_wait int epfd struct epoll_event *events int maxevents int timeout
|
|
233 sys_epoll_ctl int epfd int op int fd struct epoll_event *event
|
|
234 sys_tgkill pid_t tgid pid_t pid int sig
|
|
235 sys_utimes char *filename struct timeval *utimes
|
|
236 sys_vserver NOT IMPLEMENTED
|
|
237 sys_mbind unsigned long start unsigned long len unsigned long mode unsigned long *nmask unsigned long maxnode unsigned flags
|
|
238 sys_set_mempolicy int mode unsigned long *nmask unsigned long maxnode
|
|
239 sys_get_mempolicy int *policy unsigned long *nmask unsigned long maxnode unsigned long addr unsigned long flags
|
|
240 sys_mq_open const char *u_name int oflag mode_t mode struct mq_attr *u_attr
|
|
241 sys_mq_unlink const char *u_name
|
|
242 sys_mq_timedsend mqd_t mqdes const char *u_msg_ptr size_t msg_len unsigned int msg_prio const stuct timespec *u_abs_timeout
|
|
243 sys_mq_timedreceive mqd_t mqdes char *u_msg_ptr size_t msg_len unsigned int *u_msg_prio const struct timespec *u_abs_timeout
|
|
244 sys_mq_notify mqd_t mqdes const struct sigevent *u_notification
|
|
245 sys_mq_getsetattr mqd_t mqdes const struct mq_attr *u_mqstat struct mq_attr *u_omqstat
|
|
246 sys_kexec_load unsigned long entry unsigned long nr_segments struct kexec_segment *segments unsigned long flags
|
|
>247 sys_waitid int which pid_t upid struct siginfo *infop int options struct rusage *ru
|
|
248 sys_add_key const char *_type const char *_description const void *_payload size_t plen
|
|
249 sys_request_key const char *_type const char *_description const char *_callout_info key_serial_t destringid
|
|
250 sys_keyctl int option unsigned long arg2 unsigned long arg3 unsigned long arg4 unsigned long arg5
|
|
251 sys_ioprio_set int which int who int ioprio
|
|
252 sys_ioprio_get int which int who
|
|
253 sys_inotify_init
|
|
254 sys_inotify_add_watch int fd const char *pathname u32 mask
|
|
255 sys_inotify_rm_watch int fd __s32 wd
|
|
256 sys_migrate_pages pid_t pid unsigned long maxnode const unsigned long *old_nodes const unsigned long *new_nodes
|
|
257 sys_openat int dfd const char *filename int flags int mode
|
|
258 sys_mkdirat int dfd const char *pathname int mode
|
|
259 sys_mknodat int dfd const char *filename int mode unsigned dev
|
|
260 sys_fchownat int dfd const char *filename uid_t user gid_t group int flag
|
|
261 sys_futimesat int dfd const char *filename struct timeval *utimes
|
|
262 sys_newfstatat int dfd const char *filename struct stat *statbuf int flag
|
|
263 sys_unlinkat int dfd const char *pathname int flag
|
|
264 sys_renameat int oldfd const char *oldname int newfd const char *newname
|
|
265 sys_linkat int oldfd const char *oldname int newfd const char *newname int flags
|
|
266 sys_symlinkat const char *oldname int newfd const char *newname
|
|
267 sys_readlinkat int dfd const char *pathname char *buf int bufsiz
|
|
268 sys_fchmodat int dfd const char *filename mode_t mode
|
|
269 sys_faccessat int dfd const char *filename int mode
|
|
270 sys_pselect6 int n fd_set *inp fd_set *outp fd_set *exp struct timespec *tsp void *sig
|
|
271 sys_ppoll struct pollfd *ufds unsigned int nfds struct timespec *tsp const sigset_t *sigmask size_t sigsetsize
|
|
272 sys_unshare unsigned long unshare_flags
|
|
273 sys_set_robust_list struct robust_list_head *head size_t len
|
|
274 sys_get_robust_list int pid struct robust_list_head **head_ptr size_t *len_ptr
|
|
275 sys_splice int fd_in loff_t *off_in int fd_out loff_t *off_out size_t len unsigned int flags
|
|
276 sys_tee int fdin int fdout size_t len unsigned int flags
|
|
277 sys_sync_file_range long fd loff_t offset loff_t bytes long flags
|
|
278 sys_vmsplice int fd const struct iovec *iov unsigned long nr_segs unsigned int flags
|
|
279 sys_move_pages pid_t pid unsigned long nr_pages const void **pages const int *nodes int *status int flags
|
|
280 sys_utimensat int dfd const char *filename struct timespec *utimes int flags
|
|
281 sys_epoll_pwait int epfd struct epoll_event *events int maxevents int timeout const sigset_t *sigmask size_t sigsetsize
|
|
282 sys_signalfd int ufd sigset_t *user_mask size_t sizemask
|
|
283 sys_timerfd_create int clockid int flags
|
|
284 sys_eventfd unsigned int count
|
|
285 sys_fallocate long fd long mode loff_t offset loff_t len
|
|
286 sys_timerfd_settime int ufd int flags const struct itimerspec *utmr struct itimerspec *otmr
|
|
287 sys_timerfd_gettime int ufd struct itimerspec *otmr
|
|
288 sys_accept4 int fd struct sockaddr *upeer_sockaddr int *upeer_addrlen int flags
|
|
289 sys_signalfd4 int ufd sigset_t *user_mask size_t sizemask int flags
|
|
290 sys_eventfd2 unsigned int count int flags
|
|
291 sys_epoll_create1 int flags
|
|
292 sys_dup3 unsigned int oldfd unsigned int newfd int flags
|
|
293 sys_pipe2 int *filedes int flags
|
|
294 sys_inotify_init1 int flags
|
|
295 sys_preadv unsigned long fd const struct iovec *vec unsigned long vlen unsigned long pos_l unsigned long pos_h
|
|
296 sys_pwritev unsigned long fd const struct iovec *vec unsigned long vlen unsigned long pos_l unsigned long pos_h
|
|
297 sys_rt_tgsigqueueinfo pid_t tgid pid_t pid int sig siginfo_t *uinfo
|
|
298 sys_perf_event_open struct perf_event_attr *attr_uptr pid_t pid int cpu int group_fd unsigned long flags
|
|
299 sys_recvmmsg int fd struct msghdr *mmsg unsigned int vlen unsigned int flags struct timespec *timeout
|
|
300 sys_fanotify_init unsigned int flags unsigned int event_f_flags
|
|
301 sys_fanotify_mark long fanotify_fd long flags __u64 mask long dfd long pathname
|
|
302 sys_prlimit64 pid_t pid unsigned int resource const struct rlimit64 *new_rlim struct rlimit64 *old_rlim
|
|
303 sys_name_to_handle_at int dfd const char *name struct file_handle *handle int *mnt_id int flag
|
|
304 sys_open_by_handle_at int dfd const char *name struct file_handle *handle int *mnt_id int flags
|
|
305 sys_clock_adjtime clockid_t which_clock struct timex *tx
|
|
306 sys_syncfs int fd
|
|
307 sys_sendmmsg int fd struct mmsghdr *mmsg unsigned int vlen unsigned int flags
|
|
308 sys_setns int fd int nstype
|
|
309 sys_getcpu unsigned *cpup unsigned *nodep struct getcpu_cache *unused
|
|
310 sys_process_vm_readv pid_t pid const struct iovec *lvec unsigned long liovcnt const struct iovec *rvec unsigned long riovcnt unsigned long flags
|
|
311 sys_process_vm_writev pid_t pid const struct iovec *lvec unsigned long liovcnt const struct iovcc *rvec unsigned long riovcnt unsigned long flags
|
|
312 sys_kcmp pid_t pid1 pid_t pid2 int type unsigned long idx1 unsigned long idx2
|
|
313 sys_finit_module int fd const char __user *uargs int flags
|
|
314 sys_sched_setattr pid_t pid struct sched_attr __user *attr unsigned int flags
|
|
315 sys_sched_getattr pid_t pid struct sched_attr __user *attr unsigned int size unsigned int flags
|
|
316 sys_renameat2 int olddfd const char __user *oldname int newdfd const char __user *newname unsigned int flags
|
|
317 sys_seccomp unsigned int op unsigned int flags const char __user *uargs
|
|
318 sys_getrandom char __user *buf size_t count unsigned int flags
|
|
319 sys_memfd_create const char __user *uname_ptr unsigned int flags
|
|
320 sys_kexec_file_load int kernel_fd int initrd_fd unsigned long cmdline_len const char __user *cmdline_ptr unsigned long flags
|
|
321 sys_bpf int cmd union bpf_attr *attr unsigned int size
|
|
322 stub_execveat int dfd const char __user *filename const char __user *const __user *argv const char __user *const __user *envp int flags
|
|
323 userfaultfd int flags
|
|
324 membarrier int cmd int flags
|
|
325 mlock2 unsigned long start size_t len int flags
|
|
326 copy_file_range int fd_in loff_t __user *off_in int fd_out loff_t __user * off_out size_t len unsigned int flags
|
|
327 preadv2 unsigned long fd const struct iovec __user *vec unsigned long vlen unsigned long pos_l unsigned long pos_h int flags
|
|
328 pwritev2 unsigned long fd const struct iovec __user *vec unsigned long vlen unsigned long pos_l unsigned long pos_h int flags
|
|
*/
|