# this file is used to list all the syscalls that will be supported by
# the Bionic C library. It is used to automatically generate the syscall
# stubs, the list of syscall constants (__NR_xxxx) and the content of <linux/_unitsd.h>
#
# each non comment line has the following format:
#
# return_type    func_name[:syscall_name[:call_id]]([parameter_list])  (syscall_number|"stub")
#
# note that:
#      - syscall_name correspond to the name of the syscall, which may differ from
#        the exported function name (example: the exit syscall is implemented by the _exit()
#        function, which is not the same as the standard C exit() function which calls it)
#        The call_id parameter, given that func_name and syscall_name have
#        been provided, allows the user to specify dispatch style syscalls.
#        For example, socket() syscall on i386 actually becomes:
#          socketcall(__NR_socket, 1, *(rest of args on stack)).
#
#      - each parameter type is assumed to be stored on 32 bits, there is no plan to support
#        64-bit architectures at the moment
#
#      - it there is "stub" instead of a syscall number, the tool will not generate any
#        assembler template for the syscall; it's up to the bionic implementation to provide
#        a relevant C stub
#
#      - additionally, if the syscall number is different amoung ARM, and x86, use:
#        return_type funcname[:syscall_name](parameters) arm_number,x86_number
#
# the file is processed by a python script named gensyscalls.py
#

# process management
void    _exit:exit_group (int)      248,252
void    _exit_thread:exit (int)     1
pid_t   __fork:fork (void)           2
pid_t   _waitpid:waitpid (pid_t, int*, int, struct rusage*)   -1,7
int     __waitid:waitid(int, pid_t, struct siginfo_t*, int,void*)          280,284

# NOTE: this system call is never called directly, but we list it there
#       to have __NR_clone properly defined.
#
pid_t   __sys_clone:clone (int, void*, int*, void*, int*) 120

int     execve (const char*, char* const*, char* const*)  11

int     __setuid:setuid32 (uid_t)    213
uid_t   getuid:getuid32 ()         199
gid_t   getgid:getgid32 ()         200
uid_t   geteuid:geteuid32 ()       201
gid_t   getegid:getegid32 ()       202
uid_t   getresuid:getresuid32 ()   209
gid_t   getresgid:getresgid32 ()   211
pid_t   gettid()                   224
ssize_t readahead(int, off64_t, size_t)     225
int     getgroups:getgroups32(int, gid_t *)    205
pid_t   getpgid(pid_t)             132
pid_t   getppid()                  64
pid_t   setsid()                   66
int     setgid:setgid32(gid_t)     214
int     seteuid:seteuid32(uid_t)   stub
int     __setreuid:setreuid32(uid_t, uid_t)   203
int     __setresuid:setresuid32(uid_t, uid_t, uid_t)   208
int     setresgid:setresgid32(gid_t, gid_t, gid_t)   210
void*   __brk:brk(void*)           45
# see comments in arch-arm/bionic/kill.S to understand why we don't generate an ARM stub for kill/tkill
int     kill(pid_t, int)           -1,37
int     tkill(pid_t tid, int sig)  -1,238
int     __ptrace:ptrace(int request, int pid, void* addr, void* data)  26
int     __set_thread_area:set_thread_area(void*  user_desc)  -1,243
int     __getpriority:getpriority(int, int)  96
int     setpriority(int, int, int)   97
int     setrlimit(int resource, const struct rlimit *rlp)  75
int     getrlimit:ugetrlimit(int resource, struct rlimit *rlp)  191
int     getrusage(int who, struct rusage*  r_usage)  77
int     setgroups:setgroups32(int, const gid_t *)   206
pid_t   getpgrp(void)  stub
int     setpgid(pid_t, pid_t)  57
pid_t   vfork(void)  190,-1,190
int     setregid:setregid32(gid_t, gid_t)  204
int     chroot(const char *)  61
# IMPORTANT: Even though <sys/prctl.h> declares prctl(int,...), the syscall stub must take 6 arguments
#            to match the kernel implementation.
int     prctl(int option, unsigned int arg2, unsigned int arg3, unsigned int arg4, unsigned int arg5)  172
int     capget(cap_user_header_t header, cap_user_data_t data) 184
int     capset(cap_user_header_t header, const cap_user_data_t data) 185
int     sigaltstack(const stack_t*, stack_t*) 186
int     acct(const char*  filepath)  51

# file descriptors
ssize_t     read (int, void*, size_t)        3
ssize_t     write (int, const void*, size_t)       4
ssize_t     pread64 (int, void *, size_t, off64_t) 180
ssize_t     pwrite64 (int, void *, size_t, off64_t) 181
int         __open:open (const char*, int, mode_t)  5
int         __openat:openat (int, const char*, int, mode_t)  322,295
int         close (int)                      6
int         creat(const char*, mode_t)       stub
off_t       lseek(int, off_t, int)           19
int         __llseek:_llseek (int, unsigned long, unsigned long, loff_t*, int)  140
pid_t       getpid ()    20
void *      mmap(void *, size_t, int, int, int, long)  stub
void *      __mmap2:mmap2(void*, size_t, int, int, int, long)   192
int         munmap(void *, size_t)  91
void *      mremap(void *, size_t, size_t, unsigned long)  163
int         msync(const void *, size_t, int)    144
int         mprotect(const void *, size_t, int)  125
int         madvise(const void *, size_t, int)  220,219
int         mlock(const void *addr, size_t len)    150
int         munlock(const void *addr, size_t len)   151
int         mincore(void*  start, size_t  length, unsigned char*  vec)   219,218
int         __ioctl:ioctl(int, int, void *)  54
int         readv(int, const struct iovec *, int)   145
int         writev(int, const struct iovec *, int)  146
int         __fcntl:fcntl(int, int, void*)  55
int         flock(int, int)   143
int         fchmod(int, mode_t)  94
int         dup(int)  41
int         pipe(int *)  42,42
int         pipe2(int *, int) 359,331
int         dup2(int, int)   63
int         select:_newselect(int, struct fd_set *, struct fd_set *, struct fd_set *, struct timeval *)  142
int         ftruncate(int, off_t)  93
int         ftruncate64(int, off64_t) 194
int         getdents:getdents64(unsigned int, struct dirent *, unsigned int)   217,220
int         fsync(int)  118
int         fdatasync(int) 148
int         fchown:fchown32(int, uid_t, gid_t)  207
void        sync(void)  36
int         __fcntl64:fcntl64(int, int, void *)  221
int         __fstatfs64:fstatfs64(int, size_t, struct statfs *)  267,269
ssize_t     sendfile(int out_fd, int in_fd, off_t *offset, size_t count)  187
int         fstatat:fstatat64(int dirfd, const char *path, struct stat *buf, int flags)   327,300
int         mkdirat(int dirfd, const char *pathname, mode_t mode)  323,296
int         fchownat(int dirfd, const char *path, uid_t owner, gid_t group, int flags)  325,298
int         fchmodat(int dirfd, const char *path, mode_t mode, int flags)  333,306
int         renameat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath)  329,302
int         fsetxattr(int, const char *, const void *, size_t, int) 228
ssize_t     fgetxattr(int, const char *, void *, size_t) 231
ssize_t     flistxattr(int, char *, size_t) 234
int         fremovexattr(int, const char *) 237

# file system
int     link (const char*, const char*)  9
int     unlink (const char*)             10
int     unlinkat (int, const char *, int)   328,301
int     chdir (const char*)              12
int     mknod (const char*, mode_t, dev_t)  14
int     chmod (const char*,mode_t)          15
int     chown:chown32(const char *, uid_t, gid_t)  212
int     lchown:lchown32 (const char*, uid_t, gid_t)  198
int     mount (const char*, const char*, const char*, unsigned long, const void*)  21
int     umount(const char*)  stub
int     umount2 (const char*, int)  52
int     fstat:fstat64(int, struct stat*)    197
int     stat:stat64(const char *, struct stat *)  195
int     lstat:lstat64(const char *, struct stat *)  196
int     mkdir(const char *, mode_t) 39
int     readlink(const char *, char *, size_t)  85
int     rmdir(const char *)  40
int     rename(const char *, const char *)  38
int     __getcwd:getcwd(char * buf, size_t size)  183
int     access(const char *, int)  33
int     symlink(const char *, const char *)  83
int     fchdir(int)    133
int     truncate(const char*, off_t)    92
int     setxattr(const char *, const char *, const void *, size_t, int) 226
int     lsetxattr(const char *, const char *, const void *, size_t, int) 227
ssize_t getxattr(const char *, const char *, void *, size_t) 229
ssize_t lgetxattr(const char *, const char *, void *, size_t) 230
ssize_t listxattr(const char *, char *, size_t) 232
ssize_t llistxattr(const char *, char *, size_t) 233
int     removexattr(const char *, const char *) 235
int     lremovexattr(const char *, const char *) 236
int     __statfs64:statfs64(const char *, size_t, struct statfs *)  266,268

# time
int           pause ()                       29
int           gettimeofday(struct timeval*, struct timezone*)       78
int           settimeofday(const struct timeval*, const struct timezone*)   79
clock_t       times(struct tms *)       43
int           nanosleep(const struct timespec *, struct timespec *)   162
int           clock_gettime(clockid_t clk_id, struct timespec *tp)    263,265
int           clock_settime(clockid_t clk_id, const struct timespec *tp)  262,264
int           clock_getres(clockid_t clk_id, struct timespec *res)   264,266
int           clock_nanosleep(const struct timespec *req, struct timespec *rem)  265,267
int           getitimer(int, const struct itimerval *)   105
int           setitimer(int, const struct itimerval *, struct itimerval *)  104
int           __timer_create:timer_create(clockid_t clockid, struct sigevent *evp, timer_t *timerid)    257,259
int           __timer_settime:timer_settime(timer_t, int, const struct itimerspec*, struct itimerspec*) 258,260
int           __timer_gettime:timer_gettime(timer_t, struct itimerspec*)                                259,261
int           __timer_getoverrun:timer_getoverrun(timer_t)                                              260,262
int           __timer_delete:timer_delete(timer_t)                                                      261,263
int           utimes(const char*, const struct timeval tvp[2])                          269, 271
int           utimensat(int, const char *, const struct timespec times[2], int)         348, 320

# signals
int     sigaction(int, const struct sigaction *, struct sigaction *)  67
int     sigprocmask(int, const sigset_t *, sigset_t *)  126
int     __sigsuspend:sigsuspend(int unused1, int unused2, unsigned mask)  72
int     __rt_sigaction:rt_sigaction (int sig, const struct sigaction *act, struct sigaction *oact, size_t sigsetsize)  174
int     __rt_sigprocmask:rt_sigprocmask (int  how, const sigset_t *set, sigset_t *oset, size_t sigsetsize)  175
int     __rt_sigtimedwait:rt_sigtimedwait(const sigset_t *set, struct siginfo_t  *info, struct timespec_t  *timeout, size_t  sigset_size)  177
int     sigpending(sigset_t *)  73

# sockets
int           socket(int, int, int)              281,-1
int           socketpair(int, int, int, int*)    288,-1
int           bind(int, struct sockaddr *, int)  282,-1
int           connect(int, struct sockaddr *, socklen_t)   283,-1
int           listen(int, int)                   284,-1
int           accept(int, struct sockaddr *, socklen_t *)  285,-1
int           getsockname(int, struct sockaddr *, socklen_t *)  286,-1
int           getpeername(int, struct sockaddr *, socklen_t *)  287,-1
int           sendto(int, const void *, size_t, int, const struct sockaddr *, socklen_t)  290,-1
int           recvfrom(int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *)  292,-1
int           shutdown(int, int)  293,-1
int           setsockopt(int, int, int, const void *, socklen_t)  294,-1
int           getsockopt(int, int, int, void *, socklen_t *)    295,-1
int           sendmsg(int, const struct msghdr *, unsigned int)  296,-1
int           recvmsg(int, struct msghdr *, unsigned int)   297,-1

# sockets for x86. These are done as an "indexed" call to socketcall syscall.
int           socket:socketcall:1 (int, int, int) -1,102
int           bind:socketcall:2 (int, struct sockaddr *, int)  -1,102
int           connect:socketcall:3(int, struct sockaddr *, socklen_t)   -1,102
int           listen:socketcall:4(int, int)                   -1,102
int           accept:socketcall:5(int, struct sockaddr *, socklen_t *)  -1,102
int           getsockname:socketcall:6(int, struct sockaddr *, socklen_t *)  -1,102
int           getpeername:socketcall:7(int, struct sockaddr *, socklen_t *)  -1,102
int           socketpair:socketcall:8(int, int, int, int*)    -1,102
int           sendto:socketcall:11(int, const void *, size_t, int, const struct sockaddr *, socklen_t)  -1,102
int           recvfrom:socketcall:12(int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *)  -1,102
int           shutdown:socketcall:13(int, int)  -1,102
int           setsockopt:socketcall:14(int, int, int, const void *, socklen_t)  -1,102
int           getsockopt:socketcall:15(int, int, int, void *, socklen_t *)    -1,102
int           sendmsg:socketcall:16(int, const struct msghdr *, unsigned int)  -1,102
int           recvmsg:socketcall:17(int, struct msghdr *, unsigned int)   -1,102

# scheduler & real-time
int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param)  156
int sched_getscheduler(pid_t pid)  157
int sched_yield(void)  158
int sched_setparam(pid_t pid, const struct sched_param *param)  154
int sched_getparam(pid_t pid, struct sched_param *param)  155
int sched_get_priority_max(int policy)  159
int sched_get_priority_min(int policy)  160
int sched_rr_get_interval(pid_t pid, struct timespec *interval)  161
int sched_setaffinity(pid_t pid, size_t setsize, const cpu_set_t* set) 241
int __sched_getaffinity:sched_getaffinity(pid_t pid, size_t setsize, cpu_set_t* set)  242
int __getcpu:getcpu(unsigned *cpu, unsigned *node, void *unused) 345,318

# io priorities
int ioprio_set(int which, int who, int ioprio) 314,289
int ioprio_get(int which, int who) 315,290

# other
int     uname(struct utsname *)  122
pid_t   __wait4:wait4(pid_t pid, int *status, int options, struct rusage *rusage)   114
mode_t  umask(mode_t)  60
int      __reboot:reboot(int, int, int, void *)  88
int     __syslog:syslog(int, char *, int)  103
int     init_module(void *, unsigned long, const char *)  128
int     delete_module(const char*, unsigned int)   129
int     klogctl:syslog(int, char *, int)   103
int     sysinfo(struct sysinfo *)  116
int     personality(unsigned long)  136

# futex
int	futex(void *, int, int, void *, void *, int) 240

# epoll
int     epoll_create(int size)     250,254
int     epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)    251,255
int     epoll_wait(int epfd, struct epoll_event *events, int max, int timeout)   252,256

int     inotify_init(void)      316,291,290
int     inotify_add_watch(int, const char *, unsigned int)  317,292
int     inotify_rm_watch(int, unsigned int)  318,293

int     poll(struct pollfd *, unsigned int, long)  168

int     eventfd:eventfd2(unsigned int, int)  356,328

# ARM-specific ARM_NR_BASE == 0x0f0000 == 983040
int     __set_tls:ARM_set_tls(void*)                                 983045,-1
int     cacheflush:ARM_cacheflush(long start, long end, long flags)  983042,-1
