diff options
| -rw-r--r-- | arch/i386/bits/syscall.h | 810 | ||||
| -rw-r--r-- | arch/i386/syscall.h | 472 | ||||
| -rw-r--r-- | arch/x86_64/bits/syscall.h | 631 | ||||
| -rw-r--r-- | arch/x86_64/syscall.h | 317 | ||||
| -rw-r--r-- | include/sys/syscall.h | 16 | ||||
| -rw-r--r-- | src/internal/i386/syscall.s | 21 | ||||
| -rw-r--r-- | src/internal/syscall.c | 11 | ||||
| -rw-r--r-- | src/internal/syscall_ret.c | 11 | ||||
| -rw-r--r-- | src/internal/x86_64/syscall.s | 14 | ||||
| -rw-r--r-- | src/linux/syscall.c | 19 | ||||
| -rw-r--r-- | src/thread/pthread_create.c | 4 | 
11 files changed, 1577 insertions, 749 deletions
| diff --git a/arch/i386/bits/syscall.h b/arch/i386/bits/syscall.h new file mode 100644 index 00000000..b38f09e9 --- /dev/null +++ b/arch/i386/bits/syscall.h @@ -0,0 +1,810 @@ +#define __NR_restart_syscall      0 +#define __NR_exit		  1 +#define __NR_fork		  2 +#define __NR_read		  3 +#define __NR_write		  4 +#define __NR_open		  5 +#define __NR_close		  6 +#define __NR_waitpid		  7 +#define __NR_creat		  8 +#define __NR_link		  9 +#define __NR_unlink		 10 +#define __NR_execve		 11 +#define __NR_chdir		 12 +#define __NR_time		 13 +#define __NR_mknod		 14 +#define __NR_chmod		 15 +#define __NR_lchown		 16 +#define __NR_break		 17 +#define __NR_oldstat		 18 +#define __NR_lseek		 19 +#define __NR_getpid		 20 +#define __NR_mount		 21 +#define __NR_umount		 22 +#define __NR_setuid		 23 +#define __NR_getuid		 24 +#define __NR_stime		 25 +#define __NR_ptrace		 26 +#define __NR_alarm		 27 +#define __NR_oldfstat		 28 +#define __NR_pause		 29 +#define __NR_utime		 30 +#define __NR_stty		 31 +#define __NR_gtty		 32 +#define __NR_access		 33 +#define __NR_nice		 34 +#define __NR_ftime		 35 +#define __NR_sync		 36 +#define __NR_kill		 37 +#define __NR_rename		 38 +#define __NR_mkdir		 39 +#define __NR_rmdir		 40 +#define __NR_dup		 41 +#define __NR_pipe		 42 +#define __NR_times		 43 +#define __NR_prof		 44 +#define __NR_brk		 45 +#define __NR_setgid		 46 +#define __NR_getgid		 47 +#define __NR_signal		 48 +#define __NR_geteuid		 49 +#define __NR_getegid		 50 +#define __NR_acct		 51 +#define __NR_umount2		 52 +#define __NR_lock		 53 +#define __NR_ioctl		 54 +#define __NR_fcntl		 55 +#define __NR_mpx		 56 +#define __NR_setpgid		 57 +#define __NR_ulimit		 58 +#define __NR_oldolduname	 59 +#define __NR_umask		 60 +#define __NR_chroot		 61 +#define __NR_ustat		 62 +#define __NR_dup2		 63 +#define __NR_getppid		 64 +#define __NR_getpgrp		 65 +#define __NR_setsid		 66 +#define __NR_sigaction		 67 +#define __NR_sgetmask		 68 +#define __NR_ssetmask		 69 +#define __NR_setreuid		 70 +#define __NR_setregid		 71 +#define __NR_sigsuspend		 72 +#define __NR_sigpending		 73 +#define __NR_sethostname	 74 +#define __NR_setrlimit		 75 +#define __NR_getrlimit		 76   /* Back compatible 2Gig limited rlimit */ +#define __NR_getrusage		 77 +#define __NR_gettimeofday	 78 +#define __NR_settimeofday	 79 +#define __NR_getgroups		 80 +#define __NR_setgroups		 81 +#define __NR_select		 82 +#define __NR_symlink		 83 +#define __NR_oldlstat		 84 +#define __NR_readlink		 85 +#define __NR_uselib		 86 +#define __NR_swapon		 87 +#define __NR_reboot		 88 +#define __NR_readdir		 89 +#define __NR_mmap		 90 +#define __NR_munmap		 91 +#define __NR_truncate		 92 +#define __NR_ftruncate		 93 +#define __NR_fchmod		 94 +#define __NR_fchown		 95 +#define __NR_getpriority	 96 +#define __NR_setpriority	 97 +#define __NR_profil		 98 +#define __NR_statfs		99 +#define __NR_fstatfs		100 +#define __NR_ioperm		101 +#define __NR_socketcall		102 +#define __NR_syslog		103 +#define __NR_setitimer		104 +#define __NR_getitimer		105 +#define __NR_stat		106 +#define __NR_lstat		107 +#define __NR_fstat		108 +#define __NR_olduname		109 +#define __NR_iopl		110 +#define __NR_vhangup		111 +#define __NR_idle		112 +#define __NR_vm86old		113 +#define __NR_wait4		114 +#define __NR_swapoff		115 +#define __NR_sysinfo		116 +#define __NR_ipc		117 +#define __NR_fsync		118 +#define __NR_sigreturn		119 +#define __NR_clone		120 +#define __NR_setdomainname	121 +#define __NR_uname		122 +#define __NR_modify_ldt		123 +#define __NR_adjtimex		124 +#define __NR_mprotect		125 +#define __NR_sigprocmask	126 +#define __NR_create_module	127 +#define __NR_init_module	128 +#define __NR_delete_module	129 +#define __NR_get_kernel_syms	130 +#define __NR_quotactl		131 +#define __NR_getpgid		132 +#define __NR_fchdir		133 +#define __NR_bdflush		134 +#define __NR_sysfs		135 +#define __NR_personality	136 +#define __NR_afs_syscall	137 +#define __NR_setfsuid		138 +#define __NR_setfsgid		139 +#define __NR__llseek		140 +#define __NR_getdents		141 +#define __NR__newselect		142 +#define __NR_flock		143 +#define __NR_msync		144 +#define __NR_readv		145 +#define __NR_writev		146 +#define __NR_getsid		147 +#define __NR_fdatasync		148 +#define __NR__sysctl		149 +#define __NR_mlock		150 +#define __NR_munlock		151 +#define __NR_mlockall		152 +#define __NR_munlockall		153 +#define __NR_sched_setparam		154 +#define __NR_sched_getparam		155 +#define __NR_sched_setscheduler		156 +#define __NR_sched_getscheduler		157 +#define __NR_sched_yield		158 +#define __NR_sched_get_priority_max	159 +#define __NR_sched_get_priority_min	160 +#define __NR_sched_rr_get_interval	161 +#define __NR_nanosleep		162 +#define __NR_mremap		163 +#define __NR_setresuid		164 +#define __NR_getresuid		165 +#define __NR_vm86		166 +#define __NR_query_module	167 +#define __NR_poll		168 +#define __NR_nfsservctl		169 +#define __NR_setresgid		170 +#define __NR_getresgid		171 +#define __NR_prctl              172 +#define __NR_rt_sigreturn	173 +#define __NR_rt_sigaction	174 +#define __NR_rt_sigprocmask	175 +#define __NR_rt_sigpending	176 +#define __NR_rt_sigtimedwait	177 +#define __NR_rt_sigqueueinfo	178 +#define __NR_rt_sigsuspend	179 +#define __NR_pread64		180 +#define __NR_pwrite64		181 +#define __NR_chown		182 +#define __NR_getcwd		183 +#define __NR_capget		184 +#define __NR_capset		185 +#define __NR_sigaltstack	186 +#define __NR_sendfile		187 +#define __NR_getpmsg		188 +#define __NR_putpmsg		189 +#define __NR_vfork		190 +#define __NR_ugetrlimit		191 +#define __NR_mmap2		192 +#define __NR_truncate64		193 +#define __NR_ftruncate64	194 +#define __NR_stat64		195 +#define __NR_lstat64		196 +#define __NR_fstat64		197 +#define __NR_lchown32		198 +#define __NR_getuid32		199 +#define __NR_getgid32		200 +#define __NR_geteuid32		201 +#define __NR_getegid32		202 +#define __NR_setreuid32		203 +#define __NR_setregid32		204 +#define __NR_getgroups32	205 +#define __NR_setgroups32	206 +#define __NR_fchown32		207 +#define __NR_setresuid32	208 +#define __NR_getresuid32	209 +#define __NR_setresgid32	210 +#define __NR_getresgid32	211 +#define __NR_chown32		212 +#define __NR_setuid32		213 +#define __NR_setgid32		214 +#define __NR_setfsuid32		215 +#define __NR_setfsgid32		216 +#define __NR_pivot_root		217 +#define __NR_mincore		218 +#define __NR_madvise		219 +#define __NR_madvise1		219 +#define __NR_getdents64		220 +#define __NR_fcntl64		221 +/* 223 is unused */ +#define __NR_gettid		224 +#define __NR_readahead		225 +#define __NR_setxattr		226 +#define __NR_lsetxattr		227 +#define __NR_fsetxattr		228 +#define __NR_getxattr		229 +#define __NR_lgetxattr		230 +#define __NR_fgetxattr		231 +#define __NR_listxattr		232 +#define __NR_llistxattr		233 +#define __NR_flistxattr		234 +#define __NR_removexattr	235 +#define __NR_lremovexattr	236 +#define __NR_fremovexattr	237 +#define __NR_tkill		238 +#define __NR_sendfile64		239 +#define __NR_futex		240 +#define __NR_sched_setaffinity	241 +#define __NR_sched_getaffinity	242 +#define __NR_set_thread_area	243 +#define __NR_get_thread_area	244 +#define __NR_io_setup		245 +#define __NR_io_destroy		246 +#define __NR_io_getevents	247 +#define __NR_io_submit		248 +#define __NR_io_cancel		249 +#define __NR_fadvise64		250 +/* 251 is available for reuse (was briefly sys_set_zone_reclaim) */ +#define __NR_exit_group		252 +#define __NR_lookup_dcookie	253 +#define __NR_epoll_create	254 +#define __NR_epoll_ctl		255 +#define __NR_epoll_wait		256 +#define __NR_remap_file_pages	257 +#define __NR_set_tid_address	258 +#define __NR_timer_create	259 +#define __NR_timer_settime	(__NR_timer_create+1) +#define __NR_timer_gettime	(__NR_timer_create+2) +#define __NR_timer_getoverrun	(__NR_timer_create+3) +#define __NR_timer_delete	(__NR_timer_create+4) +#define __NR_clock_settime	(__NR_timer_create+5) +#define __NR_clock_gettime	(__NR_timer_create+6) +#define __NR_clock_getres	(__NR_timer_create+7) +#define __NR_clock_nanosleep	(__NR_timer_create+8) +#define __NR_statfs64		268 +#define __NR_fstatfs64		269 +#define __NR_tgkill		270 +#define __NR_utimes		271 +#define __NR_fadvise64_64	272 +#define __NR_vserver		273 +#define __NR_mbind		274 +#define __NR_get_mempolicy	275 +#define __NR_set_mempolicy	276 +#define __NR_mq_open 		277 +#define __NR_mq_unlink		(__NR_mq_open+1) +#define __NR_mq_timedsend	(__NR_mq_open+2) +#define __NR_mq_timedreceive	(__NR_mq_open+3) +#define __NR_mq_notify		(__NR_mq_open+4) +#define __NR_mq_getsetattr	(__NR_mq_open+5) +#define __NR_kexec_load		283 +#define __NR_waitid		284 +/* #define __NR_sys_setaltroot	285 */ +#define __NR_add_key		286 +#define __NR_request_key	287 +#define __NR_keyctl		288 +#define __NR_ioprio_set		289 +#define __NR_ioprio_get		290 +#define __NR_inotify_init	291 +#define __NR_inotify_add_watch	292 +#define __NR_inotify_rm_watch	293 +#define __NR_migrate_pages	294 +#define __NR_openat		295 +#define __NR_mkdirat		296 +#define __NR_mknodat		297 +#define __NR_fchownat		298 +#define __NR_futimesat		299 +#define __NR_fstatat64		300 +#define __NR_unlinkat		301 +#define __NR_renameat		302 +#define __NR_linkat		303 +#define __NR_symlinkat		304 +#define __NR_readlinkat		305 +#define __NR_fchmodat		306 +#define __NR_faccessat		307 +#define __NR_pselect6		308 +#define __NR_ppoll		309 +#define __NR_unshare		310 +#define __NR_set_robust_list	311 +#define __NR_get_robust_list	312 +#define __NR_splice		313 +#define __NR_sync_file_range	314 +#define __NR_tee		315 +#define __NR_vmsplice		316 +#define __NR_move_pages		317 +#define __NR_getcpu		318 +#define __NR_epoll_pwait	319 +#define __NR_utimensat		320 +#define __NR_signalfd		321 +#define __NR_timerfd_create	322 +#define __NR_eventfd		323 +#define __NR_fallocate		324 +#define __NR_timerfd_settime	325 +#define __NR_timerfd_gettime	326 +#define __NR_signalfd4		327 +#define __NR_eventfd2		328 +#define __NR_epoll_create1	329 +#define __NR_dup3		330 +#define __NR_pipe2		331 +#define __NR_inotify_init1	332 +#define __NR_preadv		333 +#define __NR_pwritev		334 + +/* fixup legacy 16-bit junk */ +#undef __NR_lchown +#undef __NR_getuid +#undef __NR_getgid +#undef __NR_geteuid +#undef __NR_getegid +#undef __NR_setreuid +#undef __NR_setregid +#undef __NR_getgroups +#undef __NR_setgroups +#undef __NR_fchown +#undef __NR_setresuid +#undef __NR_getresuid +#undef __NR_setresgid +#undef __NR_getresgid +#undef __NR_chown +#undef __NR_setuid +#undef __NR_setgid +#undef __NR_setfsuid +#undef __NR_setfsgid +#define __NR_lchown __NR_lchown32 +#define __NR_getuid __NR_getuid32 +#define __NR_getgid __NR_getgid32 +#define __NR_geteuid __NR_geteuid32 +#define __NR_getegid __NR_getegid32 +#define __NR_setreuid __NR_setreuid32 +#define __NR_setregid __NR_setregid32 +#define __NR_getgroups __NR_getgroups32 +#define __NR_setgroups __NR_setgroups32 +#define __NR_fchown __NR_fchown32 +#define __NR_setresuid __NR_setresuid32 +#define __NR_getresuid __NR_getresuid32 +#define __NR_setresgid __NR_setresgid32 +#define __NR_getresgid __NR_getresgid32 +#define __NR_chown __NR_chown32 +#define __NR_setuid __NR_setuid32 +#define __NR_setgid __NR_setgid32 +#define __NR_setfsuid __NR_setfsuid32 +#define __NR_setfsgid __NR_setfsgid32 + + +/* fixup legacy 32-bit-vs-lfs64 junk */ +#undef __NR_getdents +#undef __NR_ftruncate +#undef __NR_truncate +#undef __NR_stat +#undef __NR_fstat +#undef __NR_lstat +#undef __NR_statfs +#undef __NR_fstatfs +#define __NR_getdents __NR_getdents64 +#define __NR_ftruncate __NR_ftruncate64 +#define __NR_truncate __NR_truncate64 +#define __NR_stat __NR_stat64 +#define __NR_fstat __NR_fstat64 +#define __NR_lstat __NR_lstat64 +#define __NR_statfs __NR_statfs64 +#define __NR_fstatfs __NR_fstatfs64 +#define __NR_fstatat __NR_fstatat64 +#define __NR_pread __NR_pread64 +#define __NR_pwrite __NR_pwrite64 + +#undef __NR_getrlimit +#define __NR_getrlimit __NR_ugetrlimit + +#undef __NR_select +#define __NR_select __NR__newselect + + +/* Repeated with SYS_ prefix */ + +#define SYS_restart_syscall      0 +#define SYS_exit		  1 +#define SYS_fork		  2 +#define SYS_read		  3 +#define SYS_write		  4 +#define SYS_open		  5 +#define SYS_close		  6 +#define SYS_waitpid		  7 +#define SYS_creat		  8 +#define SYS_link		  9 +#define SYS_unlink		 10 +#define SYS_execve		 11 +#define SYS_chdir		 12 +#define SYS_time		 13 +#define SYS_mknod		 14 +#define SYS_chmod		 15 +#define SYS_lchown		 16 +#define SYS_break		 17 +#define SYS_oldstat		 18 +#define SYS_lseek		 19 +#define SYS_getpid		 20 +#define SYS_mount		 21 +#define SYS_umount		 22 +#define SYS_setuid		 23 +#define SYS_getuid		 24 +#define SYS_stime		 25 +#define SYS_ptrace		 26 +#define SYS_alarm		 27 +#define SYS_oldfstat		 28 +#define SYS_pause		 29 +#define SYS_utime		 30 +#define SYS_stty		 31 +#define SYS_gtty		 32 +#define SYS_access		 33 +#define SYS_nice		 34 +#define SYS_ftime		 35 +#define SYS_sync		 36 +#define SYS_kill		 37 +#define SYS_rename		 38 +#define SYS_mkdir		 39 +#define SYS_rmdir		 40 +#define SYS_dup		 41 +#define SYS_pipe		 42 +#define SYS_times		 43 +#define SYS_prof		 44 +#define SYS_brk		 45 +#define SYS_setgid		 46 +#define SYS_getgid		 47 +#define SYS_signal		 48 +#define SYS_geteuid		 49 +#define SYS_getegid		 50 +#define SYS_acct		 51 +#define SYS_umount2		 52 +#define SYS_lock		 53 +#define SYS_ioctl		 54 +#define SYS_fcntl		 55 +#define SYS_mpx		 56 +#define SYS_setpgid		 57 +#define SYS_ulimit		 58 +#define SYS_oldolduname	 59 +#define SYS_umask		 60 +#define SYS_chroot		 61 +#define SYS_ustat		 62 +#define SYS_dup2		 63 +#define SYS_getppid		 64 +#define SYS_getpgrp		 65 +#define SYS_setsid		 66 +#define SYS_sigaction		 67 +#define SYS_sgetmask		 68 +#define SYS_ssetmask		 69 +#define SYS_setreuid		 70 +#define SYS_setregid		 71 +#define SYS_sigsuspend		 72 +#define SYS_sigpending		 73 +#define SYS_sethostname	 74 +#define SYS_setrlimit		 75 +#define SYS_getrlimit		 76   /* Back compatible 2Gig limited rlimit */ +#define SYS_getrusage		 77 +#define SYS_gettimeofday	 78 +#define SYS_settimeofday	 79 +#define SYS_getgroups		 80 +#define SYS_setgroups		 81 +#define SYS_select		 82 +#define SYS_symlink		 83 +#define SYS_oldlstat		 84 +#define SYS_readlink		 85 +#define SYS_uselib		 86 +#define SYS_swapon		 87 +#define SYS_reboot		 88 +#define SYS_readdir		 89 +#define SYS_mmap		 90 +#define SYS_munmap		 91 +#define SYS_truncate		 92 +#define SYS_ftruncate		 93 +#define SYS_fchmod		 94 +#define SYS_fchown		 95 +#define SYS_getpriority	 96 +#define SYS_setpriority	 97 +#define SYS_profil		 98 +#define SYS_statfs		99 +#define SYS_fstatfs		100 +#define SYS_ioperm		101 +#define SYS_socketcall		102 +#define SYS_syslog		103 +#define SYS_setitimer		104 +#define SYS_getitimer		105 +#define SYS_stat		106 +#define SYS_lstat		107 +#define SYS_fstat		108 +#define SYS_olduname		109 +#define SYS_iopl		110 +#define SYS_vhangup		111 +#define SYS_idle		112 +#define SYS_vm86old		113 +#define SYS_wait4		114 +#define SYS_swapoff		115 +#define SYS_sysinfo		116 +#define SYS_ipc		117 +#define SYS_fsync		118 +#define SYS_sigreturn		119 +#define SYS_clone		120 +#define SYS_setdomainname	121 +#define SYS_uname		122 +#define SYS_modify_ldt		123 +#define SYS_adjtimex		124 +#define SYS_mprotect		125 +#define SYS_sigprocmask	126 +#define SYS_create_module	127 +#define SYS_init_module	128 +#define SYS_delete_module	129 +#define SYS_get_kernel_syms	130 +#define SYS_quotactl		131 +#define SYS_getpgid		132 +#define SYS_fchdir		133 +#define SYS_bdflush		134 +#define SYS_sysfs		135 +#define SYS_personality	136 +#define SYS_afs_syscall	137 +#define SYS_setfsuid		138 +#define SYS_setfsgid		139 +#define SYS__llseek		140 +#define SYS_getdents		141 +#define SYS__newselect		142 +#define SYS_flock		143 +#define SYS_msync		144 +#define SYS_readv		145 +#define SYS_writev		146 +#define SYS_getsid		147 +#define SYS_fdatasync		148 +#define SYS__sysctl		149 +#define SYS_mlock		150 +#define SYS_munlock		151 +#define SYS_mlockall		152 +#define SYS_munlockall		153 +#define SYS_sched_setparam		154 +#define SYS_sched_getparam		155 +#define SYS_sched_setscheduler		156 +#define SYS_sched_getscheduler		157 +#define SYS_sched_yield		158 +#define SYS_sched_get_priority_max	159 +#define SYS_sched_get_priority_min	160 +#define SYS_sched_rr_get_interval	161 +#define SYS_nanosleep		162 +#define SYS_mremap		163 +#define SYS_setresuid		164 +#define SYS_getresuid		165 +#define SYS_vm86		166 +#define SYS_query_module	167 +#define SYS_poll		168 +#define SYS_nfsservctl		169 +#define SYS_setresgid		170 +#define SYS_getresgid		171 +#define SYS_prctl              172 +#define SYS_rt_sigreturn	173 +#define SYS_rt_sigaction	174 +#define SYS_rt_sigprocmask	175 +#define SYS_rt_sigpending	176 +#define SYS_rt_sigtimedwait	177 +#define SYS_rt_sigqueueinfo	178 +#define SYS_rt_sigsuspend	179 +#define SYS_pread64		180 +#define SYS_pwrite64		181 +#define SYS_chown		182 +#define SYS_getcwd		183 +#define SYS_capget		184 +#define SYS_capset		185 +#define SYS_sigaltstack	186 +#define SYS_sendfile		187 +#define SYS_getpmsg		188 +#define SYS_putpmsg		189 +#define SYS_vfork		190 +#define SYS_ugetrlimit		191 +#define SYS_mmap2		192 +#define SYS_truncate64		193 +#define SYS_ftruncate64	194 +#define SYS_stat64		195 +#define SYS_lstat64		196 +#define SYS_fstat64		197 +#define SYS_lchown32		198 +#define SYS_getuid32		199 +#define SYS_getgid32		200 +#define SYS_geteuid32		201 +#define SYS_getegid32		202 +#define SYS_setreuid32		203 +#define SYS_setregid32		204 +#define SYS_getgroups32	205 +#define SYS_setgroups32	206 +#define SYS_fchown32		207 +#define SYS_setresuid32	208 +#define SYS_getresuid32	209 +#define SYS_setresgid32	210 +#define SYS_getresgid32	211 +#define SYS_chown32		212 +#define SYS_setuid32		213 +#define SYS_setgid32		214 +#define SYS_setfsuid32		215 +#define SYS_setfsgid32		216 +#define SYS_pivot_root		217 +#define SYS_mincore		218 +#define SYS_madvise		219 +#define SYS_madvise1		219 +#define SYS_getdents64		220 +#define SYS_fcntl64		221 +/* 223 is unused */ +#define SYS_gettid		224 +#define SYS_readahead		225 +#define SYS_setxattr		226 +#define SYS_lsetxattr		227 +#define SYS_fsetxattr		228 +#define SYS_getxattr		229 +#define SYS_lgetxattr		230 +#define SYS_fgetxattr		231 +#define SYS_listxattr		232 +#define SYS_llistxattr		233 +#define SYS_flistxattr		234 +#define SYS_removexattr	235 +#define SYS_lremovexattr	236 +#define SYS_fremovexattr	237 +#define SYS_tkill		238 +#define SYS_sendfile64		239 +#define SYS_futex		240 +#define SYS_sched_setaffinity	241 +#define SYS_sched_getaffinity	242 +#define SYS_set_thread_area	243 +#define SYS_get_thread_area	244 +#define SYS_io_setup		245 +#define SYS_io_destroy		246 +#define SYS_io_getevents	247 +#define SYS_io_submit		248 +#define SYS_io_cancel		249 +#define SYS_fadvise64		250 +/* 251 is available for reuse (was briefly sys_set_zone_reclaim) */ +#define SYS_exit_group		252 +#define SYS_lookup_dcookie	253 +#define SYS_epoll_create	254 +#define SYS_epoll_ctl		255 +#define SYS_epoll_wait		256 +#define SYS_remap_file_pages	257 +#define SYS_set_tid_address	258 +#define SYS_timer_create	259 +#define SYS_timer_settime	(SYS_timer_create+1) +#define SYS_timer_gettime	(SYS_timer_create+2) +#define SYS_timer_getoverrun	(SYS_timer_create+3) +#define SYS_timer_delete	(SYS_timer_create+4) +#define SYS_clock_settime	(SYS_timer_create+5) +#define SYS_clock_gettime	(SYS_timer_create+6) +#define SYS_clock_getres	(SYS_timer_create+7) +#define SYS_clock_nanosleep	(SYS_timer_create+8) +#define SYS_statfs64		268 +#define SYS_fstatfs64		269 +#define SYS_tgkill		270 +#define SYS_utimes		271 +#define SYS_fadvise64_64	272 +#define SYS_vserver		273 +#define SYS_mbind		274 +#define SYS_get_mempolicy	275 +#define SYS_set_mempolicy	276 +#define SYS_mq_open 		277 +#define SYS_mq_unlink		(SYS_mq_open+1) +#define SYS_mq_timedsend	(SYS_mq_open+2) +#define SYS_mq_timedreceive	(SYS_mq_open+3) +#define SYS_mq_notify		(SYS_mq_open+4) +#define SYS_mq_getsetattr	(SYS_mq_open+5) +#define SYS_kexec_load		283 +#define SYS_waitid		284 +/* #define SYS_sys_setaltroot	285 */ +#define SYS_add_key		286 +#define SYS_request_key	287 +#define SYS_keyctl		288 +#define SYS_ioprio_set		289 +#define SYS_ioprio_get		290 +#define SYS_inotify_init	291 +#define SYS_inotify_add_watch	292 +#define SYS_inotify_rm_watch	293 +#define SYS_migrate_pages	294 +#define SYS_openat		295 +#define SYS_mkdirat		296 +#define SYS_mknodat		297 +#define SYS_fchownat		298 +#define SYS_futimesat		299 +#define SYS_fstatat64		300 +#define SYS_unlinkat		301 +#define SYS_renameat		302 +#define SYS_linkat		303 +#define SYS_symlinkat		304 +#define SYS_readlinkat		305 +#define SYS_fchmodat		306 +#define SYS_faccessat		307 +#define SYS_pselect6		308 +#define SYS_ppoll		309 +#define SYS_unshare		310 +#define SYS_set_robust_list	311 +#define SYS_get_robust_list	312 +#define SYS_splice		313 +#define SYS_sync_file_range	314 +#define SYS_tee		315 +#define SYS_vmsplice		316 +#define SYS_move_pages		317 +#define SYS_getcpu		318 +#define SYS_epoll_pwait	319 +#define SYS_utimensat		320 +#define SYS_signalfd		321 +#define SYS_timerfd_create	322 +#define SYS_eventfd		323 +#define SYS_fallocate		324 +#define SYS_timerfd_settime	325 +#define SYS_timerfd_gettime	326 +#define SYS_signalfd4		327 +#define SYS_eventfd2		328 +#define SYS_epoll_create1	329 +#define SYS_dup3		330 +#define SYS_pipe2		331 +#define SYS_inotify_init1	332 +#define SYS_preadv		333 +#define SYS_pwritev		334 + +/* fixup legacy 16-bit junk */ +#undef SYS_lchown +#undef SYS_getuid +#undef SYS_getgid +#undef SYS_geteuid +#undef SYS_getegid +#undef SYS_setreuid +#undef SYS_setregid +#undef SYS_getgroups +#undef SYS_setgroups +#undef SYS_fchown +#undef SYS_setresuid +#undef SYS_getresuid +#undef SYS_setresgid +#undef SYS_getresgid +#undef SYS_chown +#undef SYS_setuid +#undef SYS_setgid +#undef SYS_setfsuid +#undef SYS_setfsgid +#define SYS_lchown SYS_lchown32 +#define SYS_getuid SYS_getuid32 +#define SYS_getgid SYS_getgid32 +#define SYS_geteuid SYS_geteuid32 +#define SYS_getegid SYS_getegid32 +#define SYS_setreuid SYS_setreuid32 +#define SYS_setregid SYS_setregid32 +#define SYS_getgroups SYS_getgroups32 +#define SYS_setgroups SYS_setgroups32 +#define SYS_fchown SYS_fchown32 +#define SYS_setresuid SYS_setresuid32 +#define SYS_getresuid SYS_getresuid32 +#define SYS_setresgid SYS_setresgid32 +#define SYS_getresgid SYS_getresgid32 +#define SYS_chown SYS_chown32 +#define SYS_setuid SYS_setuid32 +#define SYS_setgid SYS_setgid32 +#define SYS_setfsuid SYS_setfsuid32 +#define SYS_setfsgid SYS_setfsgid32 + + +/* fixup legacy 32-bit-vs-lfs64 junk */ +#undef SYS_getdents +#undef SYS_ftruncate +#undef SYS_truncate +#undef SYS_stat +#undef SYS_fstat +#undef SYS_lstat +#undef SYS_statfs +#undef SYS_fstatfs +#define SYS_getdents SYS_getdents64 +#define SYS_ftruncate SYS_ftruncate64 +#define SYS_truncate SYS_truncate64 +#define SYS_stat SYS_stat64 +#define SYS_fstat SYS_fstat64 +#define SYS_lstat SYS_lstat64 +#define SYS_statfs SYS_statfs64 +#define SYS_fstatfs SYS_fstatfs64 +#define SYS_fstatat SYS_fstatat64 +#define SYS_pread SYS_pread64 +#define SYS_pwrite SYS_pwrite64 + +#undef SYS_getrlimit +#define SYS_getrlimit SYS_ugetrlimit + +#undef SYS_select +#define SYS_select SYS__newselect diff --git a/arch/i386/syscall.h b/arch/i386/syscall.h index ee871a9d..cd3c5165 100644 --- a/arch/i386/syscall.h +++ b/arch/i386/syscall.h @@ -1,6 +1,8 @@  #ifndef _SYSCALL_H  #define _SYSCALL_H +#include <sys/syscall.h> +  #define SYSCALL_LL(x) \  ((union { long long ll; long l[2]; }){ .ll = x }).l[0], \  ((union { long long ll; long l[2]; }){ .ll = x }).l[1] @@ -22,481 +24,103 @@ static inline long __syscall_ret(unsigned long r)  extern long __syscall_ret(unsigned long);  #endif -#define SYSCALL0 "int $128" - -#ifdef __PIC__ -#define SYSCALL "xchgl %%ebx,%2\n\t" SYSCALL0 "\n\txchgl %%ebx,%2" -#define EBX "m" -#else -#define SYSCALL SYSCALL0 -#define EBX "b" -#endif -  static inline long syscall0(long n)  {  	unsigned long ret; -	__asm__ __volatile__ (SYSCALL0 : "=a"(ret) : "a"(n) : "memory"); +	__asm__ __volatile__ ("int $128" : "=a"(ret) : "a"(n) : "memory");  	return __syscall_ret(ret);  } +#ifndef __PIC__ +  static inline long syscall1(long n, long a1)  {  	unsigned long ret; -	__asm__ __volatile__ (SYSCALL : "=a"(ret) : "a"(n), EBX(a1) : "memory"); +	__asm__ __volatile__ ("int $128" : "=a"(ret) : "a"(n), "b"(a1) : "memory");  	return __syscall_ret(ret);  }  static inline long syscall2(long n, long a1, long a2)  {  	unsigned long ret; -	__asm__ __volatile__ (SYSCALL : "=a"(ret) : "a"(n), EBX(a1), "c"(a2) : "memory"); +	__asm__ __volatile__ ("int $128" : "=a"(ret) : "a"(n), "b"(a1), "c"(a2) : "memory");  	return __syscall_ret(ret);  }  static inline long syscall3(long n, long a1, long a2, long a3)  {  	unsigned long ret; -	__asm__ __volatile__ (SYSCALL : "=a"(ret) : "a"(n), EBX(a1), "c"(a2), "d"(a3) : "memory"); +	__asm__ __volatile__ ("int $128" : "=a"(ret) : "a"(n), "b"(a1), "c"(a2), "d"(a3) : "memory");  	return __syscall_ret(ret);  }  static inline long syscall4(long n, long a1, long a2, long a3, long a4)  {  	unsigned long ret; -	__asm__ __volatile__ (SYSCALL : "=a"(ret) : "a"(n), EBX(a1), "c"(a2), "d"(a3), "S"(a4) : "memory"); +	__asm__ __volatile__ ("int $128" : "=a"(ret) : "a"(n), "b"(a1), "c"(a2), "d"(a3), "S"(a4) : "memory");  	return __syscall_ret(ret);  }  static inline long syscall5(long n, long a1, long a2, long a3, long a4, long a5)  {  	unsigned long ret; -	__asm__ __volatile__ (SYSCALL : "=a"(ret) : "a"(n), EBX(a1), "c"(a2), "d"(a3), "S"(a4), "D"(a5) : "memory"); +	__asm__ __volatile__ ("int $128" : "=a"(ret) : "a"(n), "b"(a1), "c"(a2), "d"(a3), "S"(a4), "D"(a5) : "memory");  	return __syscall_ret(ret);  } -#ifdef __PIC__ -/* note: it's probably only safe to use this when a6 is on the stack */  static inline long syscall6(long n, long a1, long a2, long a3, long a4, long a5, long a6)  {  	unsigned long ret; -	__asm__ __volatile__ ("xchgl %%ebx,%2 ; pushl %1 ; pushl %%ebp ; movl %%eax,%%ebp ; movl 4(%%esp),%%eax ; int $128 ; popl %%ebp ; popl %%ecx ; xchgl %%ebx,%2" -		: "=a"(ret) : "g"(n), EBX(a1), "c"(a2), "d"(a3), "S"(a4), "D"(a5), "a"(a6) : "memory"); +	__asm__ __volatile__ ("pushl %%ebp ; mov %%eax,%%ebp ; movl %1,%%eax ; int $128 ; popl %%ebp" +		: "=a"(ret) : "i"(n), "b"(a1), "c"(a2), "d"(a3), "S"(a4), "D"(a5), "a"(a6) : "memory");  	return __syscall_ret(ret);  } +  #else -static inline long syscall6(long n, long a1, long a2, long a3, long a4, long a5, long a6) + +static inline long syscall1(long n, long a1)  {  	unsigned long ret; -	__asm__ __volatile__ ("pushl %%ebp ; mov %1, %%ebp ; xchg %%ebp, %7 ; int $128 ; popl %%ebp" -		: "=a"(ret) : "g"(n), EBX(a1), "c"(a2), "d"(a3), "S"(a4), "D"(a5), "a"(a6) : "memory"); +	__asm__ __volatile__ ("xchg %2,%%ebx ; int $128 ; xchg %2,%%ebx" +		: "=a"(ret) : "a"(n), "r"(a1) : "memory");  	return __syscall_ret(ret);  } -#endif -#define __NR_restart_syscall      0 -#define __NR_exit		  1 -#define __NR_fork		  2 -#define __NR_read		  3 -#define __NR_write		  4 -#define __NR_open		  5 -#define __NR_close		  6 -#define __NR_waitpid		  7 -#define __NR_creat		  8 -#define __NR_link		  9 -#define __NR_unlink		 10 -#define __NR_execve		 11 -#define __NR_chdir		 12 -#define __NR_time		 13 -#define __NR_mknod		 14 -#define __NR_chmod		 15 -#define __NR_lchown		 16 -#define __NR_break		 17 -#define __NR_oldstat		 18 -#define __NR_lseek		 19 -#define __NR_getpid		 20 -#define __NR_mount		 21 -#define __NR_umount		 22 -#define __NR_setuid		 23 -#define __NR_getuid		 24 -#define __NR_stime		 25 -#define __NR_ptrace		 26 -#define __NR_alarm		 27 -#define __NR_oldfstat		 28 -#define __NR_pause		 29 -#define __NR_utime		 30 -#define __NR_stty		 31 -#define __NR_gtty		 32 -#define __NR_access		 33 -#define __NR_nice		 34 -#define __NR_ftime		 35 -#define __NR_sync		 36 -#define __NR_kill		 37 -#define __NR_rename		 38 -#define __NR_mkdir		 39 -#define __NR_rmdir		 40 -#define __NR_dup		 41 -#define __NR_pipe		 42 -#define __NR_times		 43 -#define __NR_prof		 44 -#define __NR_brk		 45 -#define __NR_setgid		 46 -#define __NR_getgid		 47 -#define __NR_signal		 48 -#define __NR_geteuid		 49 -#define __NR_getegid		 50 -#define __NR_acct		 51 -#define __NR_umount2		 52 -#define __NR_lock		 53 -#define __NR_ioctl		 54 -#define __NR_fcntl		 55 -#define __NR_mpx		 56 -#define __NR_setpgid		 57 -#define __NR_ulimit		 58 -#define __NR_oldolduname	 59 -#define __NR_umask		 60 -#define __NR_chroot		 61 -#define __NR_ustat		 62 -#define __NR_dup2		 63 -#define __NR_getppid		 64 -#define __NR_getpgrp		 65 -#define __NR_setsid		 66 -#define __NR_sigaction		 67 -#define __NR_sgetmask		 68 -#define __NR_ssetmask		 69 -#define __NR_setreuid		 70 -#define __NR_setregid		 71 -#define __NR_sigsuspend		 72 -#define __NR_sigpending		 73 -#define __NR_sethostname	 74 -#define __NR_setrlimit		 75 -#define __NR_getrlimit		 76   /* Back compatible 2Gig limited rlimit */ -#define __NR_getrusage		 77 -#define __NR_gettimeofday	 78 -#define __NR_settimeofday	 79 -#define __NR_getgroups		 80 -#define __NR_setgroups		 81 -#define __NR_select		 82 -#define __NR_symlink		 83 -#define __NR_oldlstat		 84 -#define __NR_readlink		 85 -#define __NR_uselib		 86 -#define __NR_swapon		 87 -#define __NR_reboot		 88 -#define __NR_readdir		 89 -#define __NR_mmap		 90 -#define __NR_munmap		 91 -#define __NR_truncate		 92 -#define __NR_ftruncate		 93 -#define __NR_fchmod		 94 -#define __NR_fchown		 95 -#define __NR_getpriority	 96 -#define __NR_setpriority	 97 -#define __NR_profil		 98 -#define __NR_statfs		99 -#define __NR_fstatfs		100 -#define __NR_ioperm		101 -#define __NR_socketcall		102 -#define __NR_syslog		103 -#define __NR_setitimer		104 -#define __NR_getitimer		105 -#define __NR_stat		106 -#define __NR_lstat		107 -#define __NR_fstat		108 -#define __NR_olduname		109 -#define __NR_iopl		110 -#define __NR_vhangup		111 -#define __NR_idle		112 -#define __NR_vm86old		113 -#define __NR_wait4		114 -#define __NR_swapoff		115 -#define __NR_sysinfo		116 -#define __NR_ipc		117 -#define __NR_fsync		118 -#define __NR_sigreturn		119 -#define __NR_clone		120 -#define __NR_setdomainname	121 -#define __NR_uname		122 -#define __NR_modify_ldt		123 -#define __NR_adjtimex		124 -#define __NR_mprotect		125 -#define __NR_sigprocmask	126 -#define __NR_create_module	127 -#define __NR_init_module	128 -#define __NR_delete_module	129 -#define __NR_get_kernel_syms	130 -#define __NR_quotactl		131 -#define __NR_getpgid		132 -#define __NR_fchdir		133 -#define __NR_bdflush		134 -#define __NR_sysfs		135 -#define __NR_personality	136 -#define __NR_afs_syscall	137 -#define __NR_setfsuid		138 -#define __NR_setfsgid		139 -#define __NR__llseek		140 -#define __NR_getdents		141 -#define __NR__newselect		142 -#define __NR_flock		143 -#define __NR_msync		144 -#define __NR_readv		145 -#define __NR_writev		146 -#define __NR_getsid		147 -#define __NR_fdatasync		148 -#define __NR__sysctl		149 -#define __NR_mlock		150 -#define __NR_munlock		151 -#define __NR_mlockall		152 -#define __NR_munlockall		153 -#define __NR_sched_setparam		154 -#define __NR_sched_getparam		155 -#define __NR_sched_setscheduler		156 -#define __NR_sched_getscheduler		157 -#define __NR_sched_yield		158 -#define __NR_sched_get_priority_max	159 -#define __NR_sched_get_priority_min	160 -#define __NR_sched_rr_get_interval	161 -#define __NR_nanosleep		162 -#define __NR_mremap		163 -#define __NR_setresuid		164 -#define __NR_getresuid		165 -#define __NR_vm86		166 -#define __NR_query_module	167 -#define __NR_poll		168 -#define __NR_nfsservctl		169 -#define __NR_setresgid		170 -#define __NR_getresgid		171 -#define __NR_prctl              172 -#define __NR_rt_sigreturn	173 -#define __NR_rt_sigaction	174 -#define __NR_rt_sigprocmask	175 -#define __NR_rt_sigpending	176 -#define __NR_rt_sigtimedwait	177 -#define __NR_rt_sigqueueinfo	178 -#define __NR_rt_sigsuspend	179 -#define __NR_pread64		180 -#define __NR_pwrite64		181 -#define __NR_chown		182 -#define __NR_getcwd		183 -#define __NR_capget		184 -#define __NR_capset		185 -#define __NR_sigaltstack	186 -#define __NR_sendfile		187 -#define __NR_getpmsg		188 -#define __NR_putpmsg		189 -#define __NR_vfork		190 -#define __NR_ugetrlimit		191 -#define __NR_mmap2		192 -#define __NR_truncate64		193 -#define __NR_ftruncate64	194 -#define __NR_stat64		195 -#define __NR_lstat64		196 -#define __NR_fstat64		197 -#define __NR_lchown32		198 -#define __NR_getuid32		199 -#define __NR_getgid32		200 -#define __NR_geteuid32		201 -#define __NR_getegid32		202 -#define __NR_setreuid32		203 -#define __NR_setregid32		204 -#define __NR_getgroups32	205 -#define __NR_setgroups32	206 -#define __NR_fchown32		207 -#define __NR_setresuid32	208 -#define __NR_getresuid32	209 -#define __NR_setresgid32	210 -#define __NR_getresgid32	211 -#define __NR_chown32		212 -#define __NR_setuid32		213 -#define __NR_setgid32		214 -#define __NR_setfsuid32		215 -#define __NR_setfsgid32		216 -#define __NR_pivot_root		217 -#define __NR_mincore		218 -#define __NR_madvise		219 -#define __NR_madvise1		219 -#define __NR_getdents64		220 -#define __NR_fcntl64		221 -/* 223 is unused */ -#define __NR_gettid		224 -#define __NR_readahead		225 -#define __NR_setxattr		226 -#define __NR_lsetxattr		227 -#define __NR_fsetxattr		228 -#define __NR_getxattr		229 -#define __NR_lgetxattr		230 -#define __NR_fgetxattr		231 -#define __NR_listxattr		232 -#define __NR_llistxattr		233 -#define __NR_flistxattr		234 -#define __NR_removexattr	235 -#define __NR_lremovexattr	236 -#define __NR_fremovexattr	237 -#define __NR_tkill		238 -#define __NR_sendfile64		239 -#define __NR_futex		240 -#define __NR_sched_setaffinity	241 -#define __NR_sched_getaffinity	242 -#define __NR_set_thread_area	243 -#define __NR_get_thread_area	244 -#define __NR_io_setup		245 -#define __NR_io_destroy		246 -#define __NR_io_getevents	247 -#define __NR_io_submit		248 -#define __NR_io_cancel		249 -#define __NR_fadvise64		250 -/* 251 is available for reuse (was briefly sys_set_zone_reclaim) */ -#define __NR_exit_group		252 -#define __NR_lookup_dcookie	253 -#define __NR_epoll_create	254 -#define __NR_epoll_ctl		255 -#define __NR_epoll_wait		256 -#define __NR_remap_file_pages	257 -#define __NR_set_tid_address	258 -#define __NR_timer_create	259 -#define __NR_timer_settime	(__NR_timer_create+1) -#define __NR_timer_gettime	(__NR_timer_create+2) -#define __NR_timer_getoverrun	(__NR_timer_create+3) -#define __NR_timer_delete	(__NR_timer_create+4) -#define __NR_clock_settime	(__NR_timer_create+5) -#define __NR_clock_gettime	(__NR_timer_create+6) -#define __NR_clock_getres	(__NR_timer_create+7) -#define __NR_clock_nanosleep	(__NR_timer_create+8) -#define __NR_statfs64		268 -#define __NR_fstatfs64		269 -#define __NR_tgkill		270 -#define __NR_utimes		271 -#define __NR_fadvise64_64	272 -#define __NR_vserver		273 -#define __NR_mbind		274 -#define __NR_get_mempolicy	275 -#define __NR_set_mempolicy	276 -#define __NR_mq_open 		277 -#define __NR_mq_unlink		(__NR_mq_open+1) -#define __NR_mq_timedsend	(__NR_mq_open+2) -#define __NR_mq_timedreceive	(__NR_mq_open+3) -#define __NR_mq_notify		(__NR_mq_open+4) -#define __NR_mq_getsetattr	(__NR_mq_open+5) -#define __NR_kexec_load		283 -#define __NR_waitid		284 -/* #define __NR_sys_setaltroot	285 */ -#define __NR_add_key		286 -#define __NR_request_key	287 -#define __NR_keyctl		288 -#define __NR_ioprio_set		289 -#define __NR_ioprio_get		290 -#define __NR_inotify_init	291 -#define __NR_inotify_add_watch	292 -#define __NR_inotify_rm_watch	293 -#define __NR_migrate_pages	294 -#define __NR_openat		295 -#define __NR_mkdirat		296 -#define __NR_mknodat		297 -#define __NR_fchownat		298 -#define __NR_futimesat		299 -#define __NR_fstatat64		300 -#define __NR_unlinkat		301 -#define __NR_renameat		302 -#define __NR_linkat		303 -#define __NR_symlinkat		304 -#define __NR_readlinkat		305 -#define __NR_fchmodat		306 -#define __NR_faccessat		307 -#define __NR_pselect6		308 -#define __NR_ppoll		309 -#define __NR_unshare		310 -#define __NR_set_robust_list	311 -#define __NR_get_robust_list	312 -#define __NR_splice		313 -#define __NR_sync_file_range	314 -#define __NR_tee		315 -#define __NR_vmsplice		316 -#define __NR_move_pages		317 -#define __NR_getcpu		318 -#define __NR_epoll_pwait	319 -#define __NR_utimensat		320 -#define __NR_signalfd		321 -#define __NR_timerfd_create	322 -#define __NR_eventfd		323 -#define __NR_fallocate		324 -#define __NR_timerfd_settime	325 -#define __NR_timerfd_gettime	326 -#define __NR_signalfd4		327 -#define __NR_eventfd2		328 -#define __NR_epoll_create1	329 -#define __NR_dup3		330 -#define __NR_pipe2		331 -#define __NR_inotify_init1	332 -#define __NR_preadv		333 -#define __NR_pwritev		334 - -/* fixup legacy 16-bit junk */ -#undef __NR_lchown -#undef __NR_getuid -#undef __NR_getgid -#undef __NR_geteuid -#undef __NR_getegid -#undef __NR_setreuid -#undef __NR_setregid -#undef __NR_getgroups -#undef __NR_setgroups -#undef __NR_fchown -#undef __NR_setresuid -#undef __NR_getresuid -#undef __NR_setresgid -#undef __NR_getresgid -#undef __NR_chown -#undef __NR_setuid -#undef __NR_setgid -#undef __NR_setfsuid -#undef __NR_setfsgid -#define __NR_lchown __NR_lchown32 -#define __NR_getuid __NR_getuid32 -#define __NR_getgid __NR_getgid32 -#define __NR_geteuid __NR_geteuid32 -#define __NR_getegid __NR_getegid32 -#define __NR_setreuid __NR_setreuid32 -#define __NR_setregid __NR_setregid32 -#define __NR_getgroups __NR_getgroups32 -#define __NR_setgroups __NR_setgroups32 -#define __NR_fchown __NR_fchown32 -#define __NR_setresuid __NR_setresuid32 -#define __NR_getresuid __NR_getresuid32 -#define __NR_setresgid __NR_setresgid32 -#define __NR_getresgid __NR_getresgid32 -#define __NR_chown __NR_chown32 -#define __NR_setuid __NR_setuid32 -#define __NR_setgid __NR_setgid32 -#define __NR_setfsuid __NR_setfsuid32 -#define __NR_setfsgid __NR_setfsgid32 +static inline long syscall2(long n, long a1, long a2) +{ +	unsigned long ret; +	__asm__ __volatile__ ("xchg %2,%%ebx ; int $128 ; xchg %2,%%ebx" +		: "=a"(ret) : "a"(n), "r"(a1), "c"(a2) : "memory"); +	return __syscall_ret(ret); +} +static inline long syscall3(long n, long a1, long a2, long a3) +{ +	unsigned long ret; +	__asm__ __volatile__ ("xchg %2,%%ebx ; int $128 ; xchg %2,%%ebx" +		: "=a"(ret) : "a"(n), "r"(a1), "c"(a2), "d"(a3) : "memory"); +	return __syscall_ret(ret); +} -/* fixup legacy 32-bit-vs-lfs64 junk */ -#undef __NR_getdents -#undef __NR_ftruncate -#undef __NR_truncate -#undef __NR_stat -#undef __NR_fstat -#undef __NR_lstat -#undef __NR_statfs -#undef __NR_fstatfs -#define __NR_getdents __NR_getdents64 -#define __NR_ftruncate __NR_ftruncate64 -#define __NR_truncate __NR_truncate64 -#define __NR_stat __NR_stat64 -#define __NR_fstat __NR_fstat64 -#define __NR_lstat __NR_lstat64 -#define __NR_statfs __NR_statfs64 -#define __NR_fstatfs __NR_fstatfs64 -#define __NR_fstatat __NR_fstatat64 -#define __NR_pread __NR_pread64 -#define __NR_pwrite __NR_pwrite64 +static inline long syscall4(long n, long a1, long a2, long a3, long a4) +{ +	unsigned long ret; +	__asm__ __volatile__ ("xchg %2,%%ebx ; int $128 ; xchg %2,%%ebx" +		: "=a"(ret) : "a"(n), "r"(a1), "c"(a2), "d"(a3), "S"(a4) : "memory"); +	return __syscall_ret(ret); +} -#undef __NR_getrlimit -#define __NR_getrlimit __NR_ugetrlimit +static inline long syscall5(long n, long a1, long a2, long a3, long a4, long a5) +{ +	unsigned long ret; +	__asm__ __volatile__ ("pushl %%ebx ; mov %%eax,%%ebx ; movl %1,%%eax ; int $128 ; popl %%ebx" +		: "=a"(ret) : "i"(n), "a"(a1), "c"(a2), "d"(a3), "S"(a4), "D"(a5) : "memory"); +	return __syscall_ret(ret); +} -#undef __NR_select -#define __NR_select __NR__newselect +#define syscall6(n,a1,a2,a3,a4,a5,a6) __syscall((n),(a1),(a2),(a3),(a4),(a5),(a6)) +#endif  #define __SC_socket      1  #define __SC_bind        2 @@ -538,4 +162,6 @@ static inline long syscall6(long n, long a1, long a2, long a3, long a4, long a5,  #define __syscall_ioctl(fd,ioc,arg)           syscall3(__NR_ioctl, (fd), (ioc), (long)(arg))  #define __syscall_exit(code)                  syscall1(__NR_exit, code) +long __syscall(long, ...); +  #endif diff --git a/arch/x86_64/bits/syscall.h b/arch/x86_64/bits/syscall.h new file mode 100644 index 00000000..ca75019d --- /dev/null +++ b/arch/x86_64/bits/syscall.h @@ -0,0 +1,631 @@ +#define __NR_read				0 +#define __NR_write				1 +#define __NR_open				2 +#define __NR_close				3 +#define __NR_stat				4 +#define __NR_fstat				5 +#define __NR_lstat				6 +#define __NR_poll				7 +#define __NR_lseek				8 +#define __NR_mmap				9 +#define __NR_mprotect			10 +#define __NR_munmap				11 +#define __NR_brk				12 +#define __NR_rt_sigaction		13 +#define __NR_rt_sigprocmask		14 +#define __NR_rt_sigreturn		15 +#define __NR_ioctl				16 +#define __NR_pread64			17 +#define __NR_pwrite64			18 +#define __NR_readv				19 +#define __NR_writev				20 +#define __NR_access				21 +#define __NR_pipe				22 +#define __NR_select				23 +#define __NR_sched_yield		24 +#define __NR_mremap				25 +#define __NR_msync				26 +#define __NR_mincore			27 +#define __NR_madvise			28 +#define __NR_shmget				29 +#define __NR_shmat				30 +#define __NR_shmctl				31 +#define __NR_dup				32 +#define __NR_dup2				33 +#define __NR_pause				34 +#define __NR_nanosleep			35 +#define __NR_getitimer			36 +#define __NR_alarm				37 +#define __NR_setitimer			38 +#define __NR_getpid				39 +#define __NR_sendfile			40 +#define __NR_socket				41 +#define __NR_connect			42 +#define __NR_accept				43 +#define __NR_sendto				44 +#define __NR_recvfrom			45 +#define __NR_sendmsg			46 +#define __NR_recvmsg			47 +#define __NR_shutdown			48 +#define __NR_bind				49 +#define __NR_listen				50 +#define __NR_getsockname		51 +#define __NR_getpeername		52 +#define __NR_socketpair			53 +#define __NR_setsockopt			54 +#define __NR_getsockopt			55 +#define __NR_clone				56 +#define __NR_fork				57 +#define __NR_vfork				58 +#define __NR_execve				59 +#define __NR_exit				60 +#define __NR_wait4				61 +#define __NR_kill				62 +#define __NR_uname				63 +#define __NR_semget				64 +#define __NR_semop				65 +#define __NR_semctl				66 +#define __NR_shmdt				67 +#define __NR_msgget				68 +#define __NR_msgsnd				69 +#define __NR_msgrcv				70 +#define __NR_msgctl				71 +#define __NR_fcntl				72 +#define __NR_flock				73 +#define __NR_fsync				74 +#define __NR_fdatasync			75 +#define __NR_truncate			76 +#define __NR_ftruncate			77 +#define __NR_getdents			78 +#define __NR_getcwd				79 +#define __NR_chdir				80 +#define __NR_fchdir				81 +#define __NR_rename				82 +#define __NR_mkdir				83 +#define __NR_rmdir				84 +#define __NR_creat				85 +#define __NR_link				86 +#define __NR_unlink				87 +#define __NR_symlink			88 +#define __NR_readlink			89 +#define __NR_chmod				90 +#define __NR_fchmod				91 +#define __NR_chown				92 +#define __NR_fchown				93 +#define __NR_lchown				94 +#define __NR_umask				95 +#define __NR_gettimeofday		96 +#define __NR_getrlimit			97 +#define __NR_getrusage			98 +#define __NR_sysinfo			99 +#define __NR_times				100 +#define __NR_ptrace				101 +#define __NR_getuid				102 +#define __NR_syslog				103 +#define __NR_getgid				104 +#define __NR_setuid				105 +#define __NR_setgid				106 +#define __NR_geteuid			107 +#define __NR_getegid			108 +#define __NR_setpgid			109 +#define __NR_getppid			110 +#define __NR_getpgrp			111 +#define __NR_setsid				112 +#define __NR_setreuid			113 +#define __NR_setregid			114 +#define __NR_getgroups			115 +#define __NR_setgroups			116 +#define __NR_setresuid			117 +#define __NR_getresuid			118 +#define __NR_setresgid			119 +#define __NR_getresgid			120 +#define __NR_getpgid			121 +#define __NR_setfsuid			122 +#define __NR_setfsgid			123 +#define __NR_getsid				124 +#define __NR_capget				125 +#define __NR_capset				126 +#define __NR_rt_sigpending		127 +#define __NR_rt_sigtimedwait	128 +#define __NR_rt_sigqueueinfo	129 +#define __NR_rt_sigsuspend		130 +#define __NR_sigaltstack		131 +#define __NR_utime				132 +#define __NR_mknod				133 +#define __NR_uselib				134 +#define __NR_personality		135 +#define __NR_ustat				136 +#define __NR_statfs				137 +#define __NR_fstatfs			138 +#define __NR_sysfs				139 +#define __NR_getpriority			140 +#define __NR_setpriority			141 +#define __NR_sched_setparam			142 +#define __NR_sched_getparam			143 +#define __NR_sched_setscheduler		144 +#define __NR_sched_getscheduler		145 +#define __NR_sched_get_priority_max	146 +#define __NR_sched_get_priority_min	147 +#define __NR_sched_rr_get_interval	148 +#define __NR_mlock					149 +#define __NR_munlock				150 +#define __NR_mlockall				151 +#define __NR_munlockall				152 +#define __NR_vhangup				153 +#define __NR_modify_ldt				154 +#define __NR_pivot_root				155 +#define __NR__sysctl				156 +#define __NR_prctl					157 +#define __NR_arch_prctl				158 +#define __NR_adjtimex				159 +#define __NR_setrlimit				160 +#define __NR_chroot					161 +#define __NR_sync					162 +#define __NR_acct					163 +#define __NR_settimeofday			164 +#define __NR_mount					165 +#define __NR_umount2				166 +#define __NR_swapon					167 +#define __NR_swapoff				168 +#define __NR_reboot					169 +#define __NR_sethostname			170 +#define __NR_setdomainname			171 +#define __NR_iopl					172 +#define __NR_ioperm					173 +#define __NR_create_module			174 +#define __NR_init_module			175 +#define __NR_delete_module			176 +#define __NR_get_kernel_syms		177 +#define __NR_query_module			178 +#define __NR_quotactl				179 +#define __NR_nfsservctl				180 +#define __NR_getpmsg				181 +#define __NR_putpmsg				182 +#define __NR_afs_syscall			183 +#define __NR_tuxcall				184 +#define __NR_security				185 +#define __NR_gettid					186 +#define __NR_readahead				187 +#define __NR_setxattr				188 +#define __NR_lsetxattr				189 +#define __NR_fsetxattr				190 +#define __NR_getxattr				191 +#define __NR_lgetxattr				192 +#define __NR_fgetxattr				193 +#define __NR_listxattr				194 +#define __NR_llistxattr				195 +#define __NR_flistxattr				196 +#define __NR_removexattr			197 +#define __NR_lremovexattr			198 +#define __NR_fremovexattr			199 +#define __NR_tkill					200 +#define __NR_time					201 +#define __NR_futex					202 +#define __NR_sched_setaffinity		203 +#define __NR_sched_getaffinity		204 +#define __NR_set_thread_area		205 +#define __NR_io_setup				206 +#define __NR_io_destroy				207 +#define __NR_io_getevents			208 +#define __NR_io_submit				209 +#define __NR_io_cancel				210 +#define __NR_get_thread_area		211 +#define __NR_lookup_dcookie			212 +#define __NR_epoll_create			213 +#define __NR_epoll_ctl_old			214 +#define __NR_epoll_wait_old			215 +#define __NR_remap_file_pages		216 +#define __NR_getdents64				217 +#define __NR_set_tid_address		218 +#define __NR_restart_syscall		219 +#define __NR_semtimedop				220 +#define __NR_fadvise64				221 +#define __NR_timer_create			222 +#define __NR_timer_settime			223 +#define __NR_timer_gettime			224 +#define __NR_timer_getoverrun		225 +#define __NR_timer_delete			226 +#define __NR_clock_settime			227 +#define __NR_clock_gettime			228 +#define __NR_clock_getres			229 +#define __NR_clock_nanosleep		230 +#define __NR_exit_group				231 +#define __NR_epoll_wait				232 +#define __NR_epoll_ctl				233 +#define __NR_tgkill					234 +#define __NR_utimes					235 +#define __NR_vserver				236 +#define __NR_mbind					237 +#define __NR_set_mempolicy			238 +#define __NR_get_mempolicy			239 +#define __NR_mq_open				240 +#define __NR_mq_unlink				241 +#define __NR_mq_timedsend			242 +#define __NR_mq_timedreceive		243 +#define __NR_mq_notify				244 +#define __NR_mq_getsetattr			245 +#define __NR_kexec_load				246 +#define __NR_waitid					247 +#define __NR_add_key				248 +#define __NR_request_key			249 +#define __NR_keyctl					250 +#define __NR_ioprio_set				251 +#define __NR_ioprio_get				252 +#define __NR_inotify_init			253 +#define __NR_inotify_add_watch		254 +#define __NR_inotify_rm_watch		255 +#define __NR_migrate_pages			256 +#define __NR_openat					257 +#define __NR_mkdirat				258 +#define __NR_mknodat				259 +#define __NR_fchownat				260 +#define __NR_futimesat				261 +#define __NR_newfstatat				262 +#define __NR_unlinkat				263 +#define __NR_renameat				264 +#define __NR_linkat					265 +#define __NR_symlinkat				266 +#define __NR_readlinkat				267 +#define __NR_fchmodat				268 +#define __NR_faccessat				269 +#define __NR_pselect6				270 +#define __NR_ppoll					271 +#define __NR_unshare				272 +#define __NR_set_robust_list		273 +#define __NR_get_robust_list		274 +#define __NR_splice					275 +#define __NR_tee					276 +#define __NR_sync_file_range		277 +#define __NR_vmsplice				278 +#define __NR_move_pages				279 +#define __NR_utimensat				280 +#define __NR_epoll_pwait			281 +#define __NR_signalfd				282 +#define __NR_timerfd_create			283 +#define __NR_eventfd				284 +#define __NR_fallocate				285 +#define __NR_timerfd_settime		286 +#define __NR_timerfd_gettime		287 +#define __NR_accept4				288 +#define __NR_signalfd4				289 +#define __NR_eventfd2				290 +#define __NR_epoll_create1			291 +#define __NR_dup3					292 +#define __NR_pipe2					293 +#define __NR_inotify_init1			294 +#define __NR_preadv					295 +#define __NR_pwritev				296 +#define __NR_rt_tgsigqueueinfo		297 +#define __NR_perf_event_open		298 +#define __NR_recvmmsg				299 +#define __NR_fanotify_init			300 +#define __NR_fanotify_mark			301 +#define __NR_prlimit64				302 + +#undef __NR_fstatat +#undef __NR_pread +#undef __NR_pwrite +#undef __NR_getdents +#define __NR_fstatat __NR_newfstatat +#define __NR_pread __NR_pread64 +#define __NR_pwrite __NR_pwrite64 +#define __NR_getdents __NR_getdents64 + + + +/* Repeat with SYS_ prefix */ + +#define SYS_read				0 +#define SYS_write				1 +#define SYS_open				2 +#define SYS_close				3 +#define SYS_stat				4 +#define SYS_fstat				5 +#define SYS_lstat				6 +#define SYS_poll				7 +#define SYS_lseek				8 +#define SYS_mmap				9 +#define SYS_mprotect			10 +#define SYS_munmap				11 +#define SYS_brk				12 +#define SYS_rt_sigaction		13 +#define SYS_rt_sigprocmask		14 +#define SYS_rt_sigreturn		15 +#define SYS_ioctl				16 +#define SYS_pread64			17 +#define SYS_pwrite64			18 +#define SYS_readv				19 +#define SYS_writev				20 +#define SYS_access				21 +#define SYS_pipe				22 +#define SYS_select				23 +#define SYS_sched_yield		24 +#define SYS_mremap				25 +#define SYS_msync				26 +#define SYS_mincore			27 +#define SYS_madvise			28 +#define SYS_shmget				29 +#define SYS_shmat				30 +#define SYS_shmctl				31 +#define SYS_dup				32 +#define SYS_dup2				33 +#define SYS_pause				34 +#define SYS_nanosleep			35 +#define SYS_getitimer			36 +#define SYS_alarm				37 +#define SYS_setitimer			38 +#define SYS_getpid				39 +#define SYS_sendfile			40 +#define SYS_socket				41 +#define SYS_connect			42 +#define SYS_accept				43 +#define SYS_sendto				44 +#define SYS_recvfrom			45 +#define SYS_sendmsg			46 +#define SYS_recvmsg			47 +#define SYS_shutdown			48 +#define SYS_bind				49 +#define SYS_listen				50 +#define SYS_getsockname		51 +#define SYS_getpeername		52 +#define SYS_socketpair			53 +#define SYS_setsockopt			54 +#define SYS_getsockopt			55 +#define SYS_clone				56 +#define SYS_fork				57 +#define SYS_vfork				58 +#define SYS_execve				59 +#define SYS_exit				60 +#define SYS_wait4				61 +#define SYS_kill				62 +#define SYS_uname				63 +#define SYS_semget				64 +#define SYS_semop				65 +#define SYS_semctl				66 +#define SYS_shmdt				67 +#define SYS_msgget				68 +#define SYS_msgsnd				69 +#define SYS_msgrcv				70 +#define SYS_msgctl				71 +#define SYS_fcntl				72 +#define SYS_flock				73 +#define SYS_fsync				74 +#define SYS_fdatasync			75 +#define SYS_truncate			76 +#define SYS_ftruncate			77 +#define SYS_getdents			78 +#define SYS_getcwd				79 +#define SYS_chdir				80 +#define SYS_fchdir				81 +#define SYS_rename				82 +#define SYS_mkdir				83 +#define SYS_rmdir				84 +#define SYS_creat				85 +#define SYS_link				86 +#define SYS_unlink				87 +#define SYS_symlink			88 +#define SYS_readlink			89 +#define SYS_chmod				90 +#define SYS_fchmod				91 +#define SYS_chown				92 +#define SYS_fchown				93 +#define SYS_lchown				94 +#define SYS_umask				95 +#define SYS_gettimeofday		96 +#define SYS_getrlimit			97 +#define SYS_getrusage			98 +#define SYS_sysinfo			99 +#define SYS_times				100 +#define SYS_ptrace				101 +#define SYS_getuid				102 +#define SYS_syslog				103 +#define SYS_getgid				104 +#define SYS_setuid				105 +#define SYS_setgid				106 +#define SYS_geteuid			107 +#define SYS_getegid			108 +#define SYS_setpgid			109 +#define SYS_getppid			110 +#define SYS_getpgrp			111 +#define SYS_setsid				112 +#define SYS_setreuid			113 +#define SYS_setregid			114 +#define SYS_getgroups			115 +#define SYS_setgroups			116 +#define SYS_setresuid			117 +#define SYS_getresuid			118 +#define SYS_setresgid			119 +#define SYS_getresgid			120 +#define SYS_getpgid			121 +#define SYS_setfsuid			122 +#define SYS_setfsgid			123 +#define SYS_getsid				124 +#define SYS_capget				125 +#define SYS_capset				126 +#define SYS_rt_sigpending		127 +#define SYS_rt_sigtimedwait	128 +#define SYS_rt_sigqueueinfo	129 +#define SYS_rt_sigsuspend		130 +#define SYS_sigaltstack		131 +#define SYS_utime				132 +#define SYS_mknod				133 +#define SYS_uselib				134 +#define SYS_personality		135 +#define SYS_ustat				136 +#define SYS_statfs				137 +#define SYS_fstatfs			138 +#define SYS_sysfs				139 +#define SYS_getpriority			140 +#define SYS_setpriority			141 +#define SYS_sched_setparam			142 +#define SYS_sched_getparam			143 +#define SYS_sched_setscheduler		144 +#define SYS_sched_getscheduler		145 +#define SYS_sched_get_priority_max	146 +#define SYS_sched_get_priority_min	147 +#define SYS_sched_rr_get_interval	148 +#define SYS_mlock					149 +#define SYS_munlock				150 +#define SYS_mlockall				151 +#define SYS_munlockall				152 +#define SYS_vhangup				153 +#define SYS_modify_ldt				154 +#define SYS_pivot_root				155 +#define SYS__sysctl				156 +#define SYS_prctl					157 +#define SYS_arch_prctl				158 +#define SYS_adjtimex				159 +#define SYS_setrlimit				160 +#define SYS_chroot					161 +#define SYS_sync					162 +#define SYS_acct					163 +#define SYS_settimeofday			164 +#define SYS_mount					165 +#define SYS_umount2				166 +#define SYS_swapon					167 +#define SYS_swapoff				168 +#define SYS_reboot					169 +#define SYS_sethostname			170 +#define SYS_setdomainname			171 +#define SYS_iopl					172 +#define SYS_ioperm					173 +#define SYS_create_module			174 +#define SYS_init_module			175 +#define SYS_delete_module			176 +#define SYS_get_kernel_syms		177 +#define SYS_query_module			178 +#define SYS_quotactl				179 +#define SYS_nfsservctl				180 +#define SYS_getpmsg				181 +#define SYS_putpmsg				182 +#define SYS_afs_syscall			183 +#define SYS_tuxcall				184 +#define SYS_security				185 +#define SYS_gettid					186 +#define SYS_readahead				187 +#define SYS_setxattr				188 +#define SYS_lsetxattr				189 +#define SYS_fsetxattr				190 +#define SYS_getxattr				191 +#define SYS_lgetxattr				192 +#define SYS_fgetxattr				193 +#define SYS_listxattr				194 +#define SYS_llistxattr				195 +#define SYS_flistxattr				196 +#define SYS_removexattr			197 +#define SYS_lremovexattr			198 +#define SYS_fremovexattr			199 +#define SYS_tkill					200 +#define SYS_time					201 +#define SYS_futex					202 +#define SYS_sched_setaffinity		203 +#define SYS_sched_getaffinity		204 +#define SYS_set_thread_area		205 +#define SYS_io_setup				206 +#define SYS_io_destroy				207 +#define SYS_io_getevents			208 +#define SYS_io_submit				209 +#define SYS_io_cancel				210 +#define SYS_get_thread_area		211 +#define SYS_lookup_dcookie			212 +#define SYS_epoll_create			213 +#define SYS_epoll_ctl_old			214 +#define SYS_epoll_wait_old			215 +#define SYS_remap_file_pages		216 +#define SYS_getdents64				217 +#define SYS_set_tid_address		218 +#define SYS_restart_syscall		219 +#define SYS_semtimedop				220 +#define SYS_fadvise64				221 +#define SYS_timer_create			222 +#define SYS_timer_settime			223 +#define SYS_timer_gettime			224 +#define SYS_timer_getoverrun		225 +#define SYS_timer_delete			226 +#define SYS_clock_settime			227 +#define SYS_clock_gettime			228 +#define SYS_clock_getres			229 +#define SYS_clock_nanosleep		230 +#define SYS_exit_group				231 +#define SYS_epoll_wait				232 +#define SYS_epoll_ctl				233 +#define SYS_tgkill					234 +#define SYS_utimes					235 +#define SYS_vserver				236 +#define SYS_mbind					237 +#define SYS_set_mempolicy			238 +#define SYS_get_mempolicy			239 +#define SYS_mq_open				240 +#define SYS_mq_unlink				241 +#define SYS_mq_timedsend			242 +#define SYS_mq_timedreceive		243 +#define SYS_mq_notify				244 +#define SYS_mq_getsetattr			245 +#define SYS_kexec_load				246 +#define SYS_waitid					247 +#define SYS_add_key				248 +#define SYS_request_key			249 +#define SYS_keyctl					250 +#define SYS_ioprio_set				251 +#define SYS_ioprio_get				252 +#define SYS_inotify_init			253 +#define SYS_inotify_add_watch		254 +#define SYS_inotify_rm_watch		255 +#define SYS_migrate_pages			256 +#define SYS_openat					257 +#define SYS_mkdirat				258 +#define SYS_mknodat				259 +#define SYS_fchownat				260 +#define SYS_futimesat				261 +#define SYS_newfstatat				262 +#define SYS_unlinkat				263 +#define SYS_renameat				264 +#define SYS_linkat					265 +#define SYS_symlinkat				266 +#define SYS_readlinkat				267 +#define SYS_fchmodat				268 +#define SYS_faccessat				269 +#define SYS_pselect6				270 +#define SYS_ppoll					271 +#define SYS_unshare				272 +#define SYS_set_robust_list		273 +#define SYS_get_robust_list		274 +#define SYS_splice					275 +#define SYS_tee					276 +#define SYS_sync_file_range		277 +#define SYS_vmsplice				278 +#define SYS_move_pages				279 +#define SYS_utimensat				280 +#define SYS_epoll_pwait			281 +#define SYS_signalfd				282 +#define SYS_timerfd_create			283 +#define SYS_eventfd				284 +#define SYS_fallocate				285 +#define SYS_timerfd_settime		286 +#define SYS_timerfd_gettime		287 +#define SYS_accept4				288 +#define SYS_signalfd4				289 +#define SYS_eventfd2				290 +#define SYS_epoll_create1			291 +#define SYS_dup3					292 +#define SYS_pipe2					293 +#define SYS_inotify_init1			294 +#define SYS_preadv					295 +#define SYS_pwritev				296 +#define SYS_rt_tgsigqueueinfo		297 +#define SYS_perf_event_open		298 +#define SYS_recvmmsg				299 +#define SYS_fanotify_init			300 +#define SYS_fanotify_mark			301 +#define SYS_prlimit64				302 + +#undef SYS_fstatat +#undef SYS_pread +#undef SYS_pwrite +#undef SYS_getdents +#define SYS_fstatat SYS_newfstatat +#define SYS_pread SYS_pread64 +#define SYS_pwrite SYS_pwrite64 +#define SYS_getdents SYS_getdents64 + + diff --git a/arch/x86_64/syscall.h b/arch/x86_64/syscall.h index 3b6f70e6..9f22e6ba 100644 --- a/arch/x86_64/syscall.h +++ b/arch/x86_64/syscall.h @@ -1,6 +1,8 @@  #ifndef _SYSCALL_H  #define _SYSCALL_H +#include <sys/syscall.h> +  #define SYSCALL_LL(x) x, 0  #define SYSCALL_SIGSET_SIZE 8 @@ -86,319 +88,6 @@ static inline long syscall6(long n, long a1, long a2, long a3, long a4,  	return __syscall_ret(ret);  } -#define __NR_read				0 -#define __NR_write				1 -#define __NR_open				2 -#define __NR_close				3 -#define __NR_stat				4 -#define __NR_fstat				5 -#define __NR_lstat				6 -#define __NR_poll				7 -#define __NR_lseek				8 -#define __NR_mmap				9 -#define __NR_mprotect			10 -#define __NR_munmap				11 -#define __NR_brk				12 -#define __NR_rt_sigaction		13 -#define __NR_rt_sigprocmask		14 -#define __NR_rt_sigreturn		15 -#define __NR_ioctl				16 -#define __NR_pread64			17 -#define __NR_pwrite64			18 -#define __NR_readv				19 -#define __NR_writev				20 -#define __NR_access				21 -#define __NR_pipe				22 -#define __NR_select				23 -#define __NR_sched_yield		24 -#define __NR_mremap				25 -#define __NR_msync				26 -#define __NR_mincore			27 -#define __NR_madvise			28 -#define __NR_shmget				29 -#define __NR_shmat				30 -#define __NR_shmctl				31 -#define __NR_dup				32 -#define __NR_dup2				33 -#define __NR_pause				34 -#define __NR_nanosleep			35 -#define __NR_getitimer			36 -#define __NR_alarm				37 -#define __NR_setitimer			38 -#define __NR_getpid				39 -#define __NR_sendfile			40 -#define __NR_socket				41 -#define __NR_connect			42 -#define __NR_accept				43 -#define __NR_sendto				44 -#define __NR_recvfrom			45 -#define __NR_sendmsg			46 -#define __NR_recvmsg			47 -#define __NR_shutdown			48 -#define __NR_bind				49 -#define __NR_listen				50 -#define __NR_getsockname		51 -#define __NR_getpeername		52 -#define __NR_socketpair			53 -#define __NR_setsockopt			54 -#define __NR_getsockopt			55 -#define __NR_clone				56 -#define __NR_fork				57 -#define __NR_vfork				58 -#define __NR_execve				59 -#define __NR_exit				60 -#define __NR_wait4				61 -#define __NR_kill				62 -#define __NR_uname				63 -#define __NR_semget				64 -#define __NR_semop				65 -#define __NR_semctl				66 -#define __NR_shmdt				67 -#define __NR_msgget				68 -#define __NR_msgsnd				69 -#define __NR_msgrcv				70 -#define __NR_msgctl				71 -#define __NR_fcntl				72 -#define __NR_flock				73 -#define __NR_fsync				74 -#define __NR_fdatasync			75 -#define __NR_truncate			76 -#define __NR_ftruncate			77 -#define __NR_getdents			78 -#define __NR_getcwd				79 -#define __NR_chdir				80 -#define __NR_fchdir				81 -#define __NR_rename				82 -#define __NR_mkdir				83 -#define __NR_rmdir				84 -#define __NR_creat				85 -#define __NR_link				86 -#define __NR_unlink				87 -#define __NR_symlink			88 -#define __NR_readlink			89 -#define __NR_chmod				90 -#define __NR_fchmod				91 -#define __NR_chown				92 -#define __NR_fchown				93 -#define __NR_lchown				94 -#define __NR_umask				95 -#define __NR_gettimeofday		96 -#define __NR_getrlimit			97 -#define __NR_getrusage			98 -#define __NR_sysinfo			99 -#define __NR_times				100 -#define __NR_ptrace				101 -#define __NR_getuid				102 -#define __NR_syslog				103 -#define __NR_getgid				104 -#define __NR_setuid				105 -#define __NR_setgid				106 -#define __NR_geteuid			107 -#define __NR_getegid			108 -#define __NR_setpgid			109 -#define __NR_getppid			110 -#define __NR_getpgrp			111 -#define __NR_setsid				112 -#define __NR_setreuid			113 -#define __NR_setregid			114 -#define __NR_getgroups			115 -#define __NR_setgroups			116 -#define __NR_setresuid			117 -#define __NR_getresuid			118 -#define __NR_setresgid			119 -#define __NR_getresgid			120 -#define __NR_getpgid			121 -#define __NR_setfsuid			122 -#define __NR_setfsgid			123 -#define __NR_getsid				124 -#define __NR_capget				125 -#define __NR_capset				126 -#define __NR_rt_sigpending		127 -#define __NR_rt_sigtimedwait	128 -#define __NR_rt_sigqueueinfo	129 -#define __NR_rt_sigsuspend		130 -#define __NR_sigaltstack		131 -#define __NR_utime				132 -#define __NR_mknod				133 -#define __NR_uselib				134 -#define __NR_personality		135 -#define __NR_ustat				136 -#define __NR_statfs				137 -#define __NR_fstatfs			138 -#define __NR_sysfs				139 -#define __NR_getpriority			140 -#define __NR_setpriority			141 -#define __NR_sched_setparam			142 -#define __NR_sched_getparam			143 -#define __NR_sched_setscheduler		144 -#define __NR_sched_getscheduler		145 -#define __NR_sched_get_priority_max	146 -#define __NR_sched_get_priority_min	147 -#define __NR_sched_rr_get_interval	148 -#define __NR_mlock					149 -#define __NR_munlock				150 -#define __NR_mlockall				151 -#define __NR_munlockall				152 -#define __NR_vhangup				153 -#define __NR_modify_ldt				154 -#define __NR_pivot_root				155 -#define __NR__sysctl				156 -#define __NR_prctl					157 -#define __NR_arch_prctl				158 -#define __NR_adjtimex				159 -#define __NR_setrlimit				160 -#define __NR_chroot					161 -#define __NR_sync					162 -#define __NR_acct					163 -#define __NR_settimeofday			164 -#define __NR_mount					165 -#define __NR_umount2				166 -#define __NR_swapon					167 -#define __NR_swapoff				168 -#define __NR_reboot					169 -#define __NR_sethostname			170 -#define __NR_setdomainname			171 -#define __NR_iopl					172 -#define __NR_ioperm					173 -#define __NR_create_module			174 -#define __NR_init_module			175 -#define __NR_delete_module			176 -#define __NR_get_kernel_syms		177 -#define __NR_query_module			178 -#define __NR_quotactl				179 -#define __NR_nfsservctl				180 -#define __NR_getpmsg				181 -#define __NR_putpmsg				182 -#define __NR_afs_syscall			183 -#define __NR_tuxcall				184 -#define __NR_security				185 -#define __NR_gettid					186 -#define __NR_readahead				187 -#define __NR_setxattr				188 -#define __NR_lsetxattr				189 -#define __NR_fsetxattr				190 -#define __NR_getxattr				191 -#define __NR_lgetxattr				192 -#define __NR_fgetxattr				193 -#define __NR_listxattr				194 -#define __NR_llistxattr				195 -#define __NR_flistxattr				196 -#define __NR_removexattr			197 -#define __NR_lremovexattr			198 -#define __NR_fremovexattr			199 -#define __NR_tkill					200 -#define __NR_time					201 -#define __NR_futex					202 -#define __NR_sched_setaffinity		203 -#define __NR_sched_getaffinity		204 -#define __NR_set_thread_area		205 -#define __NR_io_setup				206 -#define __NR_io_destroy				207 -#define __NR_io_getevents			208 -#define __NR_io_submit				209 -#define __NR_io_cancel				210 -#define __NR_get_thread_area		211 -#define __NR_lookup_dcookie			212 -#define __NR_epoll_create			213 -#define __NR_epoll_ctl_old			214 -#define __NR_epoll_wait_old			215 -#define __NR_remap_file_pages		216 -#define __NR_getdents64				217 -#define __NR_set_tid_address		218 -#define __NR_restart_syscall		219 -#define __NR_semtimedop				220 -#define __NR_fadvise64				221 -#define __NR_timer_create			222 -#define __NR_timer_settime			223 -#define __NR_timer_gettime			224 -#define __NR_timer_getoverrun		225 -#define __NR_timer_delete			226 -#define __NR_clock_settime			227 -#define __NR_clock_gettime			228 -#define __NR_clock_getres			229 -#define __NR_clock_nanosleep		230 -#define __NR_exit_group				231 -#define __NR_epoll_wait				232 -#define __NR_epoll_ctl				233 -#define __NR_tgkill					234 -#define __NR_utimes					235 -#define __NR_vserver				236 -#define __NR_mbind					237 -#define __NR_set_mempolicy			238 -#define __NR_get_mempolicy			239 -#define __NR_mq_open				240 -#define __NR_mq_unlink				241 -#define __NR_mq_timedsend			242 -#define __NR_mq_timedreceive		243 -#define __NR_mq_notify				244 -#define __NR_mq_getsetattr			245 -#define __NR_kexec_load				246 -#define __NR_waitid					247 -#define __NR_add_key				248 -#define __NR_request_key			249 -#define __NR_keyctl					250 -#define __NR_ioprio_set				251 -#define __NR_ioprio_get				252 -#define __NR_inotify_init			253 -#define __NR_inotify_add_watch		254 -#define __NR_inotify_rm_watch		255 -#define __NR_migrate_pages			256 -#define __NR_openat					257 -#define __NR_mkdirat				258 -#define __NR_mknodat				259 -#define __NR_fchownat				260 -#define __NR_futimesat				261 -#define __NR_newfstatat				262 -#define __NR_unlinkat				263 -#define __NR_renameat				264 -#define __NR_linkat					265 -#define __NR_symlinkat				266 -#define __NR_readlinkat				267 -#define __NR_fchmodat				268 -#define __NR_faccessat				269 -#define __NR_pselect6				270 -#define __NR_ppoll					271 -#define __NR_unshare				272 -#define __NR_set_robust_list		273 -#define __NR_get_robust_list		274 -#define __NR_splice					275 -#define __NR_tee					276 -#define __NR_sync_file_range		277 -#define __NR_vmsplice				278 -#define __NR_move_pages				279 -#define __NR_utimensat				280 -#define __NR_epoll_pwait			281 -#define __NR_signalfd				282 -#define __NR_timerfd_create			283 -#define __NR_eventfd				284 -#define __NR_fallocate				285 -#define __NR_timerfd_settime		286 -#define __NR_timerfd_gettime		287 -#define __NR_accept4				288 -#define __NR_signalfd4				289 -#define __NR_eventfd2				290 -#define __NR_epoll_create1			291 -#define __NR_dup3					292 -#define __NR_pipe2					293 -#define __NR_inotify_init1			294 -#define __NR_preadv					295 -#define __NR_pwritev				296 -#define __NR_rt_tgsigqueueinfo		297 -#define __NR_perf_event_open		298 -#define __NR_recvmmsg				299 -#define __NR_fanotify_init			300 -#define __NR_fanotify_mark			301 -#define __NR_prlimit64				302 - -#undef __NR_fstatat -#undef __NR_pread -#undef __NR_pwrite -#undef __NR_getdents -#define __NR_fstatat __NR_newfstatat -#define __NR_pread __NR_pread64 -#define __NR_pwrite __NR_pwrite64 -#define __NR_getdents __NR_getdents64 -  #undef O_LARGEFILE  #define O_LARGEFILE 0100000 @@ -419,4 +108,6 @@ static inline long syscall6(long n, long a1, long a2, long a3, long a4,  #define __syscall_ioctl(fd,ioc,arg)           syscall3(__NR_ioctl, (fd), (ioc), (long)(arg))  #define __syscall_exit(code)                  syscall1(__NR_exit, code) +long __syscall(long, ...); +  #endif diff --git a/include/sys/syscall.h b/include/sys/syscall.h new file mode 100644 index 00000000..a8fec678 --- /dev/null +++ b/include/sys/syscall.h @@ -0,0 +1,16 @@ +#ifndef _SYS_SYSCALL_H +#define _SYS_SYSCALL_H +#ifdef __cplusplus +extern "C" { +#endif + + +#include <bits/syscall.h> + +long syscall(long, ...); + + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/internal/i386/syscall.s b/src/internal/i386/syscall.s new file mode 100644 index 00000000..5b19a1b8 --- /dev/null +++ b/src/internal/i386/syscall.s @@ -0,0 +1,21 @@ +.global __syscall +.type __syscall,%function +__syscall: +	pushl %ebx +	pushl %esi +	pushl %edi +	pushl %ebp +	movl 20(%esp),%eax +	movl 24(%esp),%ebx +	movl 28(%esp),%ecx +	movl 32(%esp),%edx +	movl 36(%esp),%esi +	movl 40(%esp),%edi +	movl 44(%esp),%ebp +	int $128 +	popl %ebp +	popl %edi +	popl %esi +	popl %ebx +	ret +.size __syscall,.-__syscall diff --git a/src/internal/syscall.c b/src/internal/syscall.c index 4f159e0b..e69de29b 100644 --- a/src/internal/syscall.c +++ b/src/internal/syscall.c @@ -1,11 +0,0 @@ -#include <errno.h> -#include <unistd.h> - -long __syscall_ret(unsigned long r) -{ -	if (r >= (unsigned long)-1 - 4096) { -		errno = -(long)r; -		return -1; -	} -	return (long)r; -} diff --git a/src/internal/syscall_ret.c b/src/internal/syscall_ret.c new file mode 100644 index 00000000..4f159e0b --- /dev/null +++ b/src/internal/syscall_ret.c @@ -0,0 +1,11 @@ +#include <errno.h> +#include <unistd.h> + +long __syscall_ret(unsigned long r) +{ +	if (r >= (unsigned long)-1 - 4096) { +		errno = -(long)r; +		return -1; +	} +	return (long)r; +} diff --git a/src/internal/x86_64/syscall.s b/src/internal/x86_64/syscall.s new file mode 100644 index 00000000..7bec7291 --- /dev/null +++ b/src/internal/x86_64/syscall.s @@ -0,0 +1,14 @@ +.global __syscall +.type __syscall,%function +__syscall: +di,si,dx,cx,r8,r9 +	movq %rdi,%rax +	movq %rsi,%rdi +	movq %rdx,%rsi +	movq %rcx,%rdx +	movq %r8,%r10 +	movq %r9,%r8 +	movq 8(%rsp),%r9 +	syscall +	ret +.size __syscall,.-__syscall diff --git a/src/linux/syscall.c b/src/linux/syscall.c new file mode 100644 index 00000000..15355609 --- /dev/null +++ b/src/linux/syscall.c @@ -0,0 +1,19 @@ +#include "syscall.h" +#include <stdarg.h> + +#undef syscall + +long syscall(long n, ...) +{ +	va_list ap; +	long a,b,c,d,e,f; +	va_start(ap, n); +	a=va_arg(ap, long); +	b=va_arg(ap, long); +	c=va_arg(ap, long); +	d=va_arg(ap, long); +	e=va_arg(ap, long); +	f=va_arg(ap, long); +	va_end(ap); +	return __syscall_ret(__syscall(n,a,b,c,d,e,f)); +} diff --git a/src/thread/pthread_create.c b/src/thread/pthread_create.c index 7494a486..fccfa191 100644 --- a/src/thread/pthread_create.c +++ b/src/thread/pthread_create.c @@ -91,7 +91,7 @@ static void rsyscall_handler(int sig, siginfo_t *si, void *ctx)  		return;  	} -	if (syscall6(rs.nr, rs.arg[0], rs.arg[1], rs.arg[2], +	if (__syscall(rs.nr, rs.arg[0], rs.arg[1], rs.arg[2],  		rs.arg[3], rs.arg[4], rs.arg[5]) < 0 && !rs.err) rs.err=errno;  	a_inc(&rs.cnt); @@ -140,7 +140,7 @@ static int rsyscall(int nr, long a, long b, long c, long d, long e, long f)  	while((i=rs.cnt)) __wait(&rs.cnt, 0, i, 1);  	if (rs.err) errno = rs.err, ret = -1; -	else ret = syscall6(nr, a, b, c, d, e, f); +	else ret = __syscall(nr, a, b, c, d, e, f);  	UNLOCK(&rs.lock);  	return ret; | 
