# 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, MIPS use:
#        return_type funcname[:syscall_name](parameters) arm_number,x86_number, mips_number
#
# the file is processed by a python script named gensyscalls.py
#

# 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

# 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   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         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

# 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
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

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

# 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
