Fix the SYSCALLS.TXT documentation and remove a dead script.
We use the system call constants from the kernel header files now,
so there's no need to check that they've been correctly transcribed
into SYSCALLS.TXT.
This is a work in progress. I've added TODOs to SYSCALLS.TXT explaining
what's left to do.
(cherry-pick of a51916b58b2d211bcf8ffdbe9cf7faa58e57382f.)
Change-Id: I4484acd946b1f548ac3d95327e58add9f98246ab
diff --git a/libc/SYSCALLS.TXT b/libc/SYSCALLS.TXT
index bf56ffe..96cc9e6 100644
--- a/libc/SYSCALLS.TXT
+++ b/libc/SYSCALLS.TXT
@@ -1,13 +1,11 @@
-# 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>
+# This file is used to automatically generate bionic's the system calls stubs.
#
-# each non comment line has the following format:
+# Each non comment line has the following format:
#
-# return_type func_name[:syscall_name[:call_id]]([parameter_list]) (syscall_number|"stub")
+# return_type func_name[:syscall_name[:call_id]]([parameter_list]) (1|-1|"stub")
#
-# note that:
-# - syscall_name correspond to the name of the syscall, which may differ from
+# Note that:
+# - syscall_name corresponds 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
@@ -18,302 +16,306 @@
# - 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
+# - the final field can be "1", meaning: generate a stub for each architecture,
+# taking the constants from the kernel header files.
#
-# - 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 final field can be "stub" meaning: do not generate any stubs ---
+# in this case, a hand-written custom stub must be provided.
+# TODO: replace this with something like "custom" or "none", or remove
+# it entirely.
+#
+# - the final field can be a three-element list of 1s and -1 meaning:
+# this system call is only available on some of the architectures (1),
+# and no stub should be generated for those architectures marked with -1.
+# the order is arm,x86,mips.
+# TODO: replace this with something more readable like "-arm,-mips" (meaning x86 only).
#
# 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:exit_group (int) 1
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
+pid_t __fork:fork (void) 1
+pid_t _waitpid:waitpid (pid_t, int*, int, struct rusage*) -1,1,1
+int __waitid:waitid(int, pid_t, struct siginfo_t*, int,void*) 1
+pid_t wait4(pid_t pid, int *status, int options, struct rusage *rusage) 1
# 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
+pid_t __sys_clone:clone (int, void*, int*, void*, int*) 1
-int execve (const char*, char* const*, char* const*) 11
+int execve (const char*, char* const*, char* const*) 1
-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 __setuid:setuid32 (uid_t) 1,1,-1
+int __setuid:setuid (uid_t) -1,-1,1
+uid_t getuid:getuid32 () 1,1,-1
+uid_t getuid:getuid () -1,-1,1
+gid_t getgid:getgid32 () 1,1,-1
+gid_t getgid:getgid () -1,-1,1
+uid_t geteuid:geteuid32 () 1,1,-1
+uid_t geteuid:geteuid () -1,-1,1
+gid_t getegid:getegid32 () 1,1,-1
+gid_t getegid:getegid () -1,-1,1
+uid_t getresuid:getresuid32 (uid_t *ruid, uid_t *euid, uid_t *suid) 1,1,-1
+uid_t getresuid:getresuid (uid_t *ruid, uid_t *euid, uid_t *suid) -1,-1,1
+gid_t getresgid:getresgid32 (gid_t *rgid, gid_t *egid, gid_t *sgid) 1,1,-1
+gid_t getresgid:getresgid (gid_t *rgid, gid_t *egid, gid_t *sgid) -1,-1,1
+pid_t gettid() 1
+ssize_t readahead(int, off64_t, size_t) 1
+int getgroups:getgroups32(int, gid_t *) 1,1,-1
+int getgroups:getgroups(int, gid_t *) -1,-1,1
+pid_t getpgid(pid_t) 1
+pid_t getppid() 1
+pid_t getsid(pid_t) 1
+pid_t setsid() 1
+int setgid:setgid32(gid_t) 1,1,-1
+int setgid:setgid(gid_t) -1,-1,1
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
+int __setreuid:setreuid32(uid_t, uid_t) 1,1,-1
+int __setreuid:setreuid(uid_t, uid_t) -1,-1,1
+int __setresuid:setresuid32(uid_t, uid_t, uid_t) 1,1,-1
+int __setresuid:setresuid(uid_t, uid_t, uid_t) -1,-1,1
+int setresgid:setresgid32(gid_t, gid_t, gid_t) 1,1,-1
+int setresgid:setresgid(gid_t, gid_t, gid_t) -1,-1,1
+void* __brk:brk(void*) 1
# 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
+int kill(pid_t, int) -1,1,1
+int tkill(pid_t tid, int sig) -1,1,1
+int tgkill(pid_t tgid, pid_t tid, int sig) -1,1,1
+int __ptrace:ptrace(int request, int pid, void* addr, void* data) 1
+int __set_thread_area:set_thread_area(void* user_desc) -1,1,1
+int __getpriority:getpriority(int, int) 1
+int setpriority(int, int, int) 1
+int setrlimit(int resource, const struct rlimit *rlp) 1
+int getrlimit:ugetrlimit(int resource, struct rlimit *rlp) 1,1,-1
+int getrlimit:getrlimit(int resource, struct rlimit *rlp) -1,-1,1
+int getrusage(int who, struct rusage* r_usage) 1
+int setgroups:setgroups32(int, const gid_t *) 1,1,-1
+int setgroups:setgroups(int, const gid_t *) -1,-1,1
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
+int setpgid(pid_t, pid_t) 1
+pid_t vfork(void) 1,-1,-1
+int setregid:setregid32(gid_t, gid_t) 1,1,-1
+int setregid:setregid(gid_t, gid_t) -1,-1,1
+int chroot(const char *) 1
# 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
+int prctl(int option, unsigned int arg2, unsigned int arg3, unsigned int arg4, unsigned int arg5) 1
+int capget(cap_user_header_t header, cap_user_data_t data) 1
+int capset(cap_user_header_t header, const cap_user_data_t data) 1
+int sigaltstack(const stack_t*, stack_t*) 1
+int acct(const char* filepath) 1
# 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
+ssize_t read (int, void*, size_t) 1
+ssize_t write (int, const void*, size_t) 1
+ssize_t pread64 (int, void *, size_t, off64_t) 1
+ssize_t pwrite64 (int, void *, size_t, off64_t) 1
+int __open:open (const char*, int, mode_t) 1
+int __openat:openat (int, const char*, int, mode_t) 1
+int close (int) 1
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
+off_t lseek(int, off_t, int) 1
+int __llseek:_llseek (int, unsigned long, unsigned long, loff_t*, int) 1
+pid_t getpid () 1
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
+void * __mmap2:mmap2(void*, size_t, int, int, int, long) 1
+int munmap(void *, size_t) 1
+void * mremap(void *, size_t, size_t, unsigned long) 1
+int msync(const void *, size_t, int) 1
+int mprotect(const void *, size_t, int) 1
+int madvise(const void *, size_t, int) 1
+int mlock(const void *addr, size_t len) 1
+int munlock(const void *addr, size_t len) 1
+int mlockall(int flags) 1
+int munlockall() 1
+int mincore(void* start, size_t length, unsigned char* vec) 1
+int __ioctl:ioctl(int, int, void *) 1
+int readv(int, const struct iovec *, int) 1
+int writev(int, const struct iovec *, int) 1
+int __fcntl:fcntl(int, int, void*) 1
+int flock(int, int) 1
+int fchmod(int, mode_t) 1
+int dup(int) 1
+int pipe(int *) 1,1,-1
+int pipe2(int *, int) 1
+int dup2(int, int) 1
+int select:_newselect(int, struct fd_set *, struct fd_set *, struct fd_set *, struct timeval *) 1
+int ftruncate(int, off_t) 1
+int ftruncate64(int, off64_t) 1
+int getdents:getdents64(unsigned int, struct dirent *, unsigned int) 1
+int fsync(int) 1
+int fdatasync(int) 1
+int fchown:fchown32(int, uid_t, gid_t) 1,1,-1
+int fchown:fchown(int, uid_t, gid_t) -1,-1,1
+void sync(void) 1
+int __fcntl64:fcntl64(int, int, void *) 1
+int __fstatfs64:fstatfs64(int, size_t, struct statfs *) 1
+ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count) 1
+int fstatat:fstatat64(int dirfd, const char *path, struct stat *buf, int flags) 1
+int mkdirat(int dirfd, const char *pathname, mode_t mode) 1
+int fchownat(int dirfd, const char *path, uid_t owner, gid_t group, int flags) 1
+int fchmodat(int dirfd, const char *path, mode_t mode, int flags) 1
+int renameat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath) 1
+int fsetxattr(int, const char *, const void *, size_t, int) 1
+ssize_t fgetxattr(int, const char *, void *, size_t) 1
+ssize_t flistxattr(int, char *, size_t) 1
+int fremovexattr(int, const char *) 1
# 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 link (const char*, const char*) 1
+int unlink (const char*) 1
+int unlinkat (int, const char *, int) 1
+int chdir (const char*) 1
+int mknod (const char*, mode_t, dev_t) 1
+int chmod (const char*,mode_t) 1
+int chown:chown32(const char *, uid_t, gid_t) 1,1,-1
+int chown:chown(const char *, uid_t, gid_t) -1,-1,1
+int lchown:lchown32 (const char*, uid_t, gid_t) 1,1,-1
+int lchown:lchown (const char*, uid_t, gid_t) -1,-1,1
+int mount (const char*, const char*, const char*, unsigned long, const void*) 1
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
+int umount2 (const char*, int) 1
+int fstat:fstat64(int, struct stat*) 1
+int stat:stat64(const char *, struct stat *) 1
+int lstat:lstat64(const char *, struct stat *) 1
+int mkdir(const char *, mode_t) 1
+int readlink(const char *, char *, size_t) 1
+int rmdir(const char *) 1
+int rename(const char *, const char *) 1
+int __getcwd:getcwd(char * buf, size_t size) 1
+int access(const char *, int) 1
+int faccessat(int, const char *, int, int) 1
+int symlink(const char *, const char *) 1
+int fchdir(int) 1
+int truncate(const char*, off_t) 1
+int setxattr(const char *, const char *, const void *, size_t, int) 1
+int lsetxattr(const char *, const char *, const void *, size_t, int) 1
+ssize_t getxattr(const char *, const char *, void *, size_t) 1
+ssize_t lgetxattr(const char *, const char *, void *, size_t) 1
+ssize_t listxattr(const char *, char *, size_t) 1
+ssize_t llistxattr(const char *, char *, size_t) 1
+int removexattr(const char *, const char *) 1
+int lremovexattr(const char *, const char *) 1
+int __statfs64:statfs64(const char *, size_t, struct statfs *) 1
+long unshare(unsigned long) 1
# 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
+int pause () 1
+int gettimeofday(struct timeval*, struct timezone*) 1
+int settimeofday(const struct timeval*, const struct timezone*) 1
+clock_t times(struct tms *) 1
+int nanosleep(const struct timespec *, struct timespec *) 1
+int clock_gettime(clockid_t clk_id, struct timespec *tp) 1
+int clock_settime(clockid_t clk_id, const struct timespec *tp) 1
+int clock_getres(clockid_t clk_id, struct timespec *res) 1
+int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *req, struct timespec *rem) 1
+int getitimer(int, const struct itimerval *) 1
+int setitimer(int, const struct itimerval *, struct itimerval *) 1
+int __timer_create:timer_create(clockid_t clockid, struct sigevent *evp, timer_t *timerid) 1
+int __timer_settime:timer_settime(timer_t, int, const struct itimerspec*, struct itimerspec*) 1
+int __timer_gettime:timer_gettime(timer_t, struct itimerspec*) 1
+int __timer_getoverrun:timer_getoverrun(timer_t) 1
+int __timer_delete:timer_delete(timer_t) 1
+int utimes(const char*, const struct timeval tvp[2]) 1
+int utimensat(int, const char *, const struct timespec times[2], int) 1
# 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
+int sigaction(int, const struct sigaction *, struct sigaction *) 1
+int sigprocmask(int, const sigset_t *, sigset_t *) 1
+int __sigsuspend:sigsuspend(int unused1, int unused2, unsigned mask) 1,1,-1
+int __sigsuspend:sigsuspend(const sigset_t *mask) -1,-1,1
+int __rt_sigaction:rt_sigaction (int sig, const struct sigaction *act, struct sigaction *oact, size_t sigsetsize) 1
+int __rt_sigprocmask:rt_sigprocmask (int how, const sigset_t *set, sigset_t *oset, size_t sigsetsize) 1
+int __rt_sigtimedwait:rt_sigtimedwait(const sigset_t *set, struct siginfo_t *info, struct timespec_t *timeout, size_t sigset_size) 1
+int sigpending(sigset_t *) 1
+int signalfd4(int fd, const sigset_t *mask, size_t sizemask, int flags) 1
# 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
+int socket(int, int, int) 1,-1,1
+int socketpair(int, int, int, int*) 1,-1,1
+int bind(int, struct sockaddr *, int) 1,-1,1
+int connect(int, struct sockaddr *, socklen_t) 1,-1,1
+int listen(int, int) 1,-1,1
+int accept(int, struct sockaddr *, socklen_t *) 1,-1,1
+int getsockname(int, struct sockaddr *, socklen_t *) 1,-1,1
+int getpeername(int, struct sockaddr *, socklen_t *) 1,-1,1
+int sendto(int, const void *, size_t, int, const struct sockaddr *, socklen_t) 1,-1,1
+int recvfrom(int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *) 1,-1,1
+int shutdown(int, int) 1,-1,1
+int setsockopt(int, int, int, const void *, socklen_t) 1,-1,1
+int getsockopt(int, int, int, void *, socklen_t *) 1,-1,1
+int sendmsg(int, const struct msghdr *, unsigned int) 1,-1,1
+int recvmsg(int, struct msghdr *, unsigned int) 1,-1,1
# 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
+int socket:socketcall:1 (int, int, int) -1,1,-1
+int bind:socketcall:2 (int, struct sockaddr *, int) -1,1,-1
+int connect:socketcall:3(int, struct sockaddr *, socklen_t) -1,1,-1
+int listen:socketcall:4(int, int) -1,1,-1
+int accept:socketcall:5(int, struct sockaddr *, socklen_t *) -1,1,-1
+int getsockname:socketcall:6(int, struct sockaddr *, socklen_t *) -1,1,-1
+int getpeername:socketcall:7(int, struct sockaddr *, socklen_t *) -1,1,-1
+int socketpair:socketcall:8(int, int, int, int*) -1,1,-1
+int sendto:socketcall:11(int, const void *, size_t, int, const struct sockaddr *, socklen_t) -1,1,-1
+int recvfrom:socketcall:12(int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *) -1,1,-1
+int shutdown:socketcall:13(int, int) -1,1,-1
+int setsockopt:socketcall:14(int, int, int, const void *, socklen_t) -1,1,-1
+int getsockopt:socketcall:15(int, int, int, void *, socklen_t *) -1,1,-1
+int sendmsg:socketcall:16(int, const struct msghdr *, unsigned int) -1,1,-1
+int recvmsg:socketcall:17(int, struct msghdr *, unsigned int) -1,1,-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
+int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param) 1
+int sched_getscheduler(pid_t pid) 1
+int sched_yield(void) 1
+int sched_setparam(pid_t pid, const struct sched_param *param) 1
+int sched_getparam(pid_t pid, struct sched_param *param) 1
+int sched_get_priority_max(int policy) 1
+int sched_get_priority_min(int policy) 1
+int sched_rr_get_interval(pid_t pid, struct timespec *interval) 1
+int sched_setaffinity(pid_t pid, size_t setsize, const cpu_set_t* set) 1
+int __sched_getaffinity:sched_getaffinity(pid_t pid, size_t setsize, cpu_set_t* set) 1
+int __getcpu:getcpu(unsigned *cpu, unsigned *node, void *unused) 1
# io priorities
-int ioprio_set(int which, int who, int ioprio) 314,289,314
-int ioprio_get(int which, int who) 315,290,315
+int ioprio_set(int which, int who, int ioprio) 1
+int ioprio_get(int which, int who) 1
# 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
+int uname(struct utsname *) 1
+mode_t umask(mode_t) 1
+int __reboot:reboot(int, int, int, void *) 1
+int __syslog:syslog(int, char *, int) 1
+int init_module(void *, unsigned long, const char *) 1
+int delete_module(const char*, unsigned int) 1
+int klogctl:syslog(int, char *, int) 1
+int sysinfo(struct sysinfo *) 1
+int personality(unsigned long) 1
+long perf_event_open(struct perf_event_attr *attr_uptr, pid_t pid, int cpu, int group_fd, unsigned long flags) 1
# futex
-int futex(void *, int, int, void *, void *, int) 240,240,238
+int futex(void *, int, int, void *, void *, int) 1
# 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 epoll_create(int size) 1
+int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event) 1
+int epoll_wait(int epfd, struct epoll_event *events, int max, int timeout) 1
-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 inotify_init(void) 1
+int inotify_add_watch(int, const char *, unsigned int) 1
+int inotify_rm_watch(int, unsigned int) 1
-int poll(struct pollfd *, unsigned int, long) 168,168,188
+int poll(struct pollfd *, unsigned int, long) 1
-int eventfd:eventfd2(unsigned int, int) 356,328,325
+int eventfd:eventfd2(unsigned int, int) 1
# ARM-specific ARM_NR_BASE == 0x0f0000 == 983040
-int __set_tls:__ARM_NR_set_tls(void*) 983045,-1,-1
-int cacheflush:__ARM_NR_cacheflush(long start, long end, long flags) 983042,-1,-1
+int __set_tls:__ARM_NR_set_tls(void*) 1,-1,-1
+int cacheflush:__ARM_NR_cacheflush(long start, long end, long flags) 1,-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
+int _flush_cache:cacheflush(char *addr, const int nbytes, const int op) -1,-1,1
+int syscall(int number,...) -1,-1,1
diff --git a/libc/tools/checksyscalls.py b/libc/tools/checksyscalls.py
deleted file mode 100755
index b325676..0000000
--- a/libc/tools/checksyscalls.py
+++ /dev/null
@@ -1,188 +0,0 @@
-#!/usr/bin/python
-#
-# this tool is used to check that the syscall numbers that are in
-# SYSCALLS.TXT correspond to those found in the Linux kernel sources
-# for the arm, i386 and mips architectures
-#
-
-import sys, re, string, os, commands
-from bionic_utils import *
-
-# change this if necessary
-syscalls_txt = "SYSCALLS.TXT"
-
-def usage():
- print "usage: checksyscalls [options] [kernel_headers_rootdir]"
- print " options: -v enable verbose mode"
- sys.exit(1)
-
-
-linux_root = None
-syscalls_file = None
-
-def parse_command_line(args):
- global linux_root, syscalls_file, verbose
-
- program = args[0]
- args = args[1:]
- while len(args) > 0 and args[0][0] == "-":
- option = args[0][1:]
- args = args[1:]
-
- if option == "v":
- D_setlevel(1)
- else:
- usage()
-
- if len(args) > 2:
- usage()
-
- if len(args) == 0:
- linux_root = find_kernel_headers()
- if linux_root == None:
- print "Could not locate original or system kernel headers root directory."
- print "Please specify one when calling this program, i.e. 'checksyscalls <headers-directory>'"
- sys.exit(1)
- print "using the following kernel headers root: '%s'" % linux_root
- else:
- linux_root = args[0]
- if not os.path.isdir(linux_root):
- print "the directory '%s' does not exist. aborting\n" % headers_root
- sys.exit(1)
-
-parse_command_line(sys.argv)
-
-syscalls_file = find_file_from_upwards(None, syscalls_txt)
-if not syscalls_file:
- print "could not locate the %s file. Aborting" % syscalls_txt
- sys.exit(1)
-
-print "parsing %s" % syscalls_file
-
-# read the syscalls description file
-#
-
-parser = SysCallsTxtParser()
-parser.parse_file(syscalls_file)
-syscalls = parser.syscalls
-
-re_nr_line = re.compile( r"#define __NR_(\w*)\s*\(__NR_SYSCALL_BASE\+\s*(\w*)\)" )
-re_nr_clock_line = re.compile( r"#define __NR_(\w*)\s*\(__NR_timer_create\+(\w*)\)" )
-re_arm_nr_line = re.compile( r"#define __ARM_NR_(\w*)\s*\(__ARM_NR_BASE\+\s*(\w*)\)" )
-re_x86_line = re.compile( r"#define __NR_(\w*)\s*([0-9]*)" )
-re_mips_line = re.compile( r"#define __NR_(\w*)\s*\(__NR_Linux\s*\+\s*([0-9]*)\)" )
-
-# now read the Linux arm header
-def process_nr_line(line,dict):
-
- m = re_mips_line.match(line)
- if m:
- if dict["Linux"]==4000:
- dict[m.group(1)] = int(m.group(2))
- return
-
- m = re_nr_line.match(line)
- if m:
- dict[m.group(1)] = int(m.group(2))
- return
-
- m = re_nr_clock_line.match(line)
- if m:
- dict[m.group(1)] = int(m.group(2)) + 259
- return
-
- m = re_arm_nr_line.match(line)
- if m:
- offset_str = m.group(2)
- #print "%s = %s" % (m.group(1), offset_str)
- base = 10
- if offset_str.lower().startswith("0x"):
- # Processing something similar to
- # #define __ARM_NR_cmpxchg (__ARM_NR_BASE+0x00fff0)
- base = 16
- dict["ARM_"+m.group(1)] = int(offset_str, base) + 0x0f0000
- return
-
- m = re_x86_line.match(line)
- if m:
- # try block because the ARM header has some #define _NR_XXXXX /* nothing */
- try:
- #print "%s = %s" % (m.group(1), m.group(2))
- dict[m.group(1)] = int(m.group(2))
- except:
- pass
- return
-
-
-def process_header(header_file,dict):
- fp = open(header_file)
- D("reading "+header_file)
- for line in fp.xreadlines():
- line = line.strip()
- if not line: continue
- process_nr_line(line,dict)
- fp.close()
-
-arm_dict = {}
-x86_dict = {}
-mips_dict = {}
-
-# remove trailing slash from the linux_root, if any
-if linux_root[-1] == '/':
- linux_root = linux_root[:-1]
-
-arm_unistd = find_arch_header(linux_root, "arm", "unistd.h")
-if not arm_unistd:
- print "WEIRD: Could not locate the ARM unistd.h kernel header file,"
- print "maybe using a different set of kernel headers might help."
- sys.exit(1)
-
-# on recent kernels, asm-i386 and asm-x64_64 have been merged into asm-x86
-# with two distinct unistd_32.h and unistd_64.h definition files.
-# take care of this here
-#
-x86_unistd = find_arch_header(linux_root, "i386", "unistd.h")
-if not x86_unistd:
- x86_unistd = find_arch_header(linux_root, "x86", "unistd_32.h")
- if not x86_unistd:
- print "WEIRD: Could not locate the i386/x86 unistd.h header file,"
- print "maybe using a different set of kernel headers might help."
- sys.exit(1)
-
-mips_unistd = find_arch_header(linux_root, "mips", "unistd.h")
-if not mips_unistd:
- print "WEIRD: Could not locate the Mips unistd.h kernel header file,"
- print "maybe using a different set of kernel headers might help."
- sys.exit(1)
-
-process_header( arm_unistd, arm_dict )
-process_header( x86_unistd, x86_dict )
-process_header( mips_unistd, mips_dict )
-
-# now perform the comparison
-errors = 0
-
-def check_syscalls(archname, idname, arch_dict):
- errors = 0
- for sc in syscalls:
- sc_name = sc["name"]
- sc_id = sc[idname]
- if sc_id == -1:
- sc_id = sc["common"]
- if sc_id >= 0:
- if not arch_dict.has_key(sc_name):
- print "error: %s syscall %s not defined, should be %d" % (archname, sc_name, sc_id)
- errors += 1
- elif arch_dict[sc_name] != sc_id:
- print "error: %s syscall %s should be %d instead of %d" % (archname, sc_name, arch_dict[sc_name], sc_id)
- errors += 1
- return errors
-
-errors += check_syscalls("arm", "armid", arm_dict)
-errors += check_syscalls("x86", "x86id", x86_dict)
-errors += check_syscalls("mips", "mipsid", mips_dict)
-
-if errors == 0:
- print "congratulations, everything's fine !!"
-else:
- print "correct %d errors !!" % errors