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

# 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
