# 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/_unistd.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, MIPS use:
#        return_type funcname[:syscall_name](parameters) arm_number,x86_number,mips_number
#
# This file is processed by a python script named gensyscalls.py.
#
# The checksyscalls.py script can check that the syscall numbers here are
# correct by comparing them to the numbers in the Linux kernel headers.
#

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

# 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,213,-1
int     __setuid:setuid (uid_t)   -1,-1,23
uid_t   getuid:getuid32 ()         199,199,-1
uid_t   getuid:getuid ()           -1,-1,24
gid_t   getgid:getgid32 ()         200,200,-1
gid_t   getgid:getgid ()           -1,-1,47
uid_t   geteuid:geteuid32 ()       201,201,-1
uid_t   geteuid:geteuid ()         -1,-1,49
gid_t   getegid:getegid32 ()       202,202,-1
gid_t   getegid:getegid ()         -1,-1,50
uid_t   getresuid:getresuid32 (uid_t *ruid, uid_t *euid, uid_t *suid)   209,209,-1
uid_t   getresuid:getresuid (uid_t *ruid, uid_t *euid, uid_t *suid)     -1,-1,186
gid_t   getresgid:getresgid32 (gid_t *rgid, gid_t *egid, gid_t *sgid)   211,211,-1
gid_t   getresgid:getresgid (gid_t *rgid, gid_t *egid, gid_t *sgid)     -1,-1,191
pid_t   gettid()                   224,224,222
ssize_t readahead(int, off64_t, size_t)     225,225,223
int     getgroups:getgroups32(int, gid_t *)    205,205,-1
int     getgroups:getgroups(int, gid_t *)      -1,-1,80
pid_t   getpgid(pid_t)             132
pid_t   getppid()                  64
pid_t   getsid(pid_t)              147,147,151
pid_t   setsid()                   66
int     setgid:setgid32(gid_t)     214,214,-1
int     setgid:setgid(gid_t)       -1,-1,46
int     seteuid:seteuid32(uid_t)   stub
int     __setreuid:setreuid32(uid_t, uid_t)   203,203,-1
int     __setreuid:setreuid(uid_t, uid_t)     -1,-1,70
int     __setresuid:setresuid32(uid_t, uid_t, uid_t)   208,208,-1
int     __setresuid:setresuid(uid_t, uid_t, uid_t)     -1,-1,185
int     setresgid:setresgid32(gid_t, gid_t, gid_t)   210,210,-1
int     setresgid:setresgid(gid_t, gid_t, gid_t)     -1,-1,190
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,37
int     tkill(pid_t tid, int sig)  -1,238,236
int     tgkill(pid_t tgid, pid_t tid, int sig)  -1,270,266
int     __ptrace:ptrace(int request, int pid, void* addr, void* data)  26
int     __set_thread_area:set_thread_area(void*  user_desc)  -1,243,283
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,191,-1
int     getrlimit:getrlimit(int resource, struct rlimit *rlp)  -1,-1,76
int     getrusage(int who, struct rusage*  r_usage)  77
int     setgroups:setgroups32(int, const gid_t *)   206,206,-1
int     setgroups:setgroups(int, const gid_t *)     -1,-1,81
pid_t   getpgrp(void)  stub
int     setpgid(pid_t, pid_t)  57
pid_t   vfork(void)  190,-1,-1
int     setregid:setregid32(gid_t, gid_t)  204,204,-1
int     setregid:setregid(gid_t, gid_t)    -1,-1,71
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,172,192
int     capget(cap_user_header_t header, cap_user_data_t data) 184,184,204
int     capset(cap_user_header_t header, const cap_user_data_t data) 185,185,205
int     sigaltstack(const stack_t*, stack_t*) 186,186,206
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,180,200
ssize_t     pwrite64 (int, void *, size_t, off64_t) 181,181,201
int         __open:open (const char*, int, mode_t)  5
int         __openat:openat (int, const char*, int, mode_t)  322,295,288
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,192,210
int         munmap(void *, size_t)  91
void *      mremap(void *, size_t, size_t, unsigned long)  163,163,167
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,218
int         mlock(const void *addr, size_t len)    150,150,154
int         munlock(const void *addr, size_t len)   151,151,155
int         mlockall(int flags)   152,152,156
int         munlockall()   153,153,157
int         mincore(void*  start, size_t  length, unsigned char*  vec)   219,218,217
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,-1
int         pipe2(int *, int) 359,331,328
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,194,212
int         getdents:getdents64(unsigned int, struct dirent *, unsigned int)   217,220,219
int         fsync(int)  118
int         fdatasync(int) 148,148,152
int         fchown:fchown32(int, uid_t, gid_t)  207,207,-1
int         fchown:fchown(int, uid_t, gid_t)    -1,-1,95
void        sync(void)  36
int         __fcntl64:fcntl64(int, int, void *)  221,221,220
int         __fstatfs64:fstatfs64(int, size_t, struct statfs *)  267,269,256
ssize_t     sendfile(int out_fd, int in_fd, off_t *offset, size_t count)  187,187,207
int         fstatat:fstatat64(int dirfd, const char *path, struct stat *buf, int flags)   327,300,293
int         mkdirat(int dirfd, const char *pathname, mode_t mode)  323,296,289
int         fchownat(int dirfd, const char *path, uid_t owner, gid_t group, int flags)  325,298,291
int         fchmodat(int dirfd, const char *path, mode_t mode, int flags)  333,306,299
int         renameat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath)  329,302,295
int         fsetxattr(int, const char *, const void *, size_t, int) 228,228,226
ssize_t     fgetxattr(int, const char *, void *, size_t) 231,231,229
ssize_t     flistxattr(int, char *, size_t) 234,234,232
int         fremovexattr(int, const char *) 237,237,235

# file system
int     link (const char*, const char*)  9
int     unlink (const char*)             10
int     unlinkat (int, const char *, int)   328,301,294
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,212,-1
int     chown:chown(const char *, uid_t, gid_t)    -1,-1,202
int     lchown:lchown32 (const char*, uid_t, gid_t)  198,198,-1
int     lchown:lchown (const char*, uid_t, gid_t)  -1,-1,16
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,197,215
int     stat:stat64(const char *, struct stat *)  195,195,213
int     lstat:lstat64(const char *, struct stat *)  196,196,214
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,183,203
int     access(const char *, int)  33
int     faccessat(int, const char *, int, int)  334,307,300
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,226,224
int     lsetxattr(const char *, const char *, const void *, size_t, int) 227,227,225
ssize_t getxattr(const char *, const char *, void *, size_t) 229,229,227
ssize_t lgetxattr(const char *, const char *, void *, size_t) 230,230,228
ssize_t listxattr(const char *, char *, size_t) 232,232,230
ssize_t llistxattr(const char *, char *, size_t) 233,233,231
int     removexattr(const char *, const char *) 235,235,233
int     lremovexattr(const char *, const char *) 236,236,234
int     __statfs64:statfs64(const char *, size_t, struct statfs *)  266,268,255
long    unshare(unsigned long)  337,310,303

# 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,162,166
int           clock_gettime(clockid_t clk_id, struct timespec *tp)    263,265,263
int           clock_settime(clockid_t clk_id, const struct timespec *tp)  262,264,262
int           clock_getres(clockid_t clk_id, struct timespec *res)   264,266,264
int           clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *req, struct timespec *rem)  265,267,265
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,257
int           __timer_settime:timer_settime(timer_t, int, const struct itimerspec*, struct itimerspec*) 258,260,258
int           __timer_gettime:timer_gettime(timer_t, struct itimerspec*)                                259,261,259
int           __timer_getoverrun:timer_getoverrun(timer_t)                                              260,262,260
int           __timer_delete:timer_delete(timer_t)                                                      261,263,261
int           utimes(const char*, const struct timeval tvp[2])                          269,271,267
int           utimensat(int, const char *, const struct timespec times[2], int)         348,320,316

# 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,72,-1
int     __sigsuspend:sigsuspend(const sigset_t *mask)  -1,-1,72
int     __rt_sigaction:rt_sigaction (int sig, const struct sigaction *act, struct sigaction *oact, size_t sigsetsize)  174,174,194
int     __rt_sigprocmask:rt_sigprocmask (int  how, const sigset_t *set, sigset_t *oset, size_t sigsetsize)  175,175,195
int     __rt_sigtimedwait:rt_sigtimedwait(const sigset_t *set, struct siginfo_t  *info, struct timespec_t  *timeout, size_t  sigset_size)  177,177,197
int     sigpending(sigset_t *)  73
int     signalfd4(int fd, const sigset_t *mask, size_t sizemask, int flags)  355,327,324

# sockets
int           socket(int, int, int)              281,-1,183
int           socketpair(int, int, int, int*)    288,-1,184
int           bind(int, struct sockaddr *, int)  282,-1,169
int           connect(int, struct sockaddr *, socklen_t)   283,-1,170
int           listen(int, int)                   284,-1,174
int           accept(int, struct sockaddr *, socklen_t *)  285,-1,168
int           getsockname(int, struct sockaddr *, socklen_t *)  286,-1,172
int           getpeername(int, struct sockaddr *, socklen_t *)  287,-1,171
int           sendto(int, const void *, size_t, int, const struct sockaddr *, socklen_t)  290,-1,180
int           recvfrom(int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *)  292,-1,176
int           shutdown(int, int)  293,-1,182
int           setsockopt(int, int, int, const void *, socklen_t)  294,-1,181
int           getsockopt(int, int, int, void *, socklen_t *)    295,-1,173
int           sendmsg(int, const struct msghdr *, unsigned int)  296,-1,179
int           recvmsg(int, struct msghdr *, unsigned int)   297,-1,177

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

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

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

# other
int     uname(struct utsname *)  122
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
long    perf_event_open(struct perf_event_attr *attr_uptr, pid_t pid, int cpu, int group_fd, unsigned long flags) 364,336,333

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

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

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

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

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

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

# MIPS-specific
int	_flush_cache:cacheflush(char *addr, const int nbytes, const int op)	-1,-1,147
int	syscall(int number,...) -1,-1,0
