From: Jan-Benedict G. <jb...@us...> - 2005-10-31 13:27:56
|
Update of /cvsroot/linux-vax/kernel-2.5/arch/vax/kernel In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15773/arch/vax/kernel Modified Files: entry.S syscall.c Log Message: - Removal of sys_call_table. - Content is merged into our number_of_arguments table. - Initialized by macro (to allow some extra hacks :-) Index: entry.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.5/arch/vax/kernel/entry.S,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- entry.S 23 Sep 2005 09:51:12 -0000 1.19 +++ entry.S 31 Oct 2005 13:27:18 -0000 1.20 @@ -284,234 +284,3 @@ movl probe_resume_addr, (%sp) rei /* Return to the handler address */ - -.data -.globl sys_call_table -sys_call_table: - .long sys_ni_syscall /* 0 old setup system call*/ - .long sys_exit - .long sys_fork - .long sys_read - .long sys_write - .long sys_open /* 5 */ - .long sys_close - .long sys_waitpid - .long sys_creat - .long sys_link - .long sys_unlink /* 10 */ - .long sys_execve - .long sys_chdir - .long sys_time - .long sys_mknod - .long sys_chmod /* 15 */ - .long sys_lchown16 - .long sys_ni_syscall /* old break syscall holder */ - .long sys_ni_syscall /* old stat syscall */ - .long sys_lseek - .long sys_getpid /* 20 */ - .long sys_mount - .long sys_oldumount /* old umount syscall holder */ - .long sys_setuid16 - .long sys_getuid16 - .long sys_stime /* 25 */ - .long sys_ptrace - .long sys_alarm - .long sys_ni_syscall /* old fstat */ - .long sys_pause - .long sys_utime /* 30 */ - .long sys_ni_syscall /* old stty syscall holder */ - .long sys_ni_syscall /* old gtty syscall holder */ - .long sys_access - .long sys_nice - .long sys_ni_syscall /* 35 old ftime syscall holder */ - .long sys_sync - .long sys_kill - .long sys_rename - .long sys_mkdir - .long sys_rmdir /* 40 */ - .long sys_dup - .long sys_pipe - .long sys_times - .long sys_ni_syscall /* old prof syscall holder */ - .long sys_brk /* 45 */ - .long sys_setgid16 - .long sys_getgid16 - .long sys_signal - .long sys_geteuid16 - .long sys_getegid16 /* 50 */ - .long sys_acct - .long sys_oldumount /* recycled never used phys() */ - .long sys_ni_syscall /* old lock syscall holder */ - .long sys_ioctl - .long sys_fcntl /* 55 */ - .long sys_ni_syscall /* old mpx syscall holder */ - .long sys_setpgid - .long sys_ni_syscall /* old ulimit syscall holder */ - .long sys_ni_syscall /* old uname syscall holder */ - .long sys_umask /* 60 */ - .long sys_chroot - .long sys_ustat - .long sys_dup2 - .long sys_getppid - .long sys_getpgrp /* 65 */ - .long sys_setsid - .long sys_sigaction - .long sys_sgetmask - .long sys_ssetmask - .long sys_setreuid16 /* 70 */ - .long sys_setregid16 - .long sys_sigsuspend - .long sys_sigpending - .long sys_sethostname - .long sys_setrlimit /* 75 */ - .long sys_old_getrlimit - .long sys_getrusage - .long sys_gettimeofday - .long sys_settimeofday - .long sys_getgroups16 /* 80 */ - .long sys_setgroups16 - .long sys_ni_syscall /* old_select */ - .long sys_symlink - .long sys_ni_syscall /* was sys_lstat */ - .long sys_readlink /* 85 */ - .long sys_uselib - .long sys_swapon - .long sys_reboot - .long sys_ni_syscall /* old readdir syscall holder */ - .long sys_mmap /* 90 */ - .long sys_munmap - .long sys_truncate - .long sys_ftruncate - .long sys_fchmod - .long sys_fchown16 /* 95 */ - .long sys_getpriority - .long sys_setpriority - .long sys_ni_syscall /* old profil syscall holder */ - .long sys_statfs - .long sys_fstatfs /* 100 */ - .long sys_ni_syscall /* ioperm in i386 */ - .long sys_socketcall - .long sys_syslog - .long sys_setitimer - .long sys_getitimer /* 105 */ - .long sys_newstat - .long sys_newlstat - .long sys_newfstat - .long sys_ni_syscall /* old uname syscall */ - .long sys_ni_syscall /* 110 iopl in i386 */ - .long sys_vhangup - .long sys_ni_syscall /* old idle syscall */ - .long sys_ni_syscall /* vm86old on i386 */ - .long sys_wait4 - .long sys_swapoff /* 115 */ - .long sys_sysinfo - .long sys_ipc - .long sys_fsync - .long sys_sigreturn - .long sys_clone /* 120 */ - .long sys_setdomainname - .long sys_newuname - .long sys_ni_syscall /* modify_ldt in i386 */ - .long sys_adjtimex - .long sys_mprotect /* 125 */ - .long sys_sigprocmask - .long sys_ni_syscall /* was sys_create_module */ - .long sys_init_module - .long sys_delete_module - .long sys_ni_syscall /* 130 - was sys_get_kernel_syms*/ - .long sys_quotactl - .long sys_getpgid - .long sys_fchdir - .long sys_bdflush - .long sys_sysfs /* 135 */ - .long sys_personality - .long sys_ni_syscall /* afs_syscall */ - .long sys_setfsuid16 - .long sys_setfsgid16 - .long sys_llseek /* 140 */ - .long sys_getdents - .long sys_select - .long sys_flock - .long sys_msync - .long sys_readv /* 145 */ - .long sys_writev - .long sys_getsid - .long sys_fdatasync - .long sys_sysctl - .long sys_mlock /* 150 */ - .long sys_munlock - .long sys_mlockall - .long sys_munlockall - .long sys_sched_setparam - .long sys_sched_getparam /* 155 */ - .long sys_sched_setscheduler - .long sys_sched_getscheduler - .long sys_sched_yield - .long sys_sched_get_priority_max - .long sys_sched_get_priority_min /* 160 */ - .long sys_sched_rr_get_interval - .long sys_nanosleep - .long sys_mremap - .long sys_setresuid16 - .long sys_getresuid16 /* 165 */ - .long sys_ni_syscall /* vm86 on i386 */ - .long sys_ni_syscall /* was sys_query_module */ - .long sys_poll - .long sys_nfsservctl - .long sys_setresgid16 /* 170 */ - .long sys_getresgid16 - .long sys_prctl - .long sys_rt_sigreturn - .long sys_rt_sigaction - .long sys_rt_sigprocmask /* 175 */ - .long sys_rt_sigpending - .long sys_rt_sigtimedwait - .long sys_rt_sigqueueinfo - .long sys_rt_sigsuspend - .long sys_pread64 /* 180 */ - .long sys_pwrite64 - .long sys_chown16 - .long sys_getcwd - .long sys_capget - .long sys_capset /* 185 */ - .long sys_sigaltstack - .long sys_sendfile - .long sys_ni_syscall /* streams1 */ - .long sys_ni_syscall /* streams2 * - .long sys_vfork /* 190 */ - .long sys_getrlimit - .long sys_mmap2 - .long sys_truncate64 - .long sys_ftruncate64 - .long sys_stat64 /* 195 */ - .long sys_lstat64 - .long sys_fstat64 - .long sys_lchown - .long sys_getuid - .long sys_getgid /* 200 */ - .long sys_geteuid - .long sys_getegid - .long sys_setreuid - .long sys_setregid - .long sys_getgroups /* 205 */ - .long sys_setgroups - .long sys_fchown - .long sys_setresuid - .long sys_getresuid - .long sys_setresgid /* 210 */ - .long sys_getresgid - .long sys_chown - .long sys_setuid - .long sys_setgid - .long sys_setfsuid /* 215 */ - .long sys_setfsgid - .long sys_pivot_root - .long sys_mincore - .long sys_madvise - .long sys_getdents64 /* 220 */ - .long sys_fcntl64 - .long sys_tkill - .long sys_statfs64 - .long sys_fstatfs64 - .long sys_ni_syscall /* 225 sys_vserver */ - Index: syscall.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.5/arch/vax/kernel/syscall.c,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- syscall.c 22 Oct 2005 18:22:54 -0000 1.18 +++ syscall.c 31 Oct 2005 13:27:18 -0000 1.19 @@ -25,240 +25,248 @@ #include "interrupt.h" /* Local, private definitions */ +/* ./arch/vax/kernel/syscall.c */ +extern int sys_pipe(unsigned long *fildes); +extern unsigned long sys_mmap(unsigned long addr, size_t len, int prot, + int flags, int fd, off_t offset); +extern int sys_ipc (uint call, int first, int second, int third, void *ptr, + long fifth); +extern asmlinkage long sys_mmap2(unsigned long addr, unsigned long len, + unsigned long prot, unsigned long flags, unsigned long fd, + unsigned long pgoff); +/* ./arch/vax/kernel/process.c */ +extern int sys_fork(struct pt_regs regs); +extern int sys_vfork(struct pt_regs *regs); +extern int sys_execve(char *filename, char **argv, char **envp, + struct pt_regs *regs); +extern int sys_clone(unsigned long clone_flags, unsigned long newsp, + struct pt_regs *regs); +/* ./arch/vax/kernel/ptrace.c */ +extern asmlinkage int sys_ptrace(long request, long pid, long addr, long data); +/* ./arch/vax/kernel/signal.c */ +extern int sys_sigaction(int sig, const struct old_sigaction *act, + struct old_sigaction *oact); +extern int sys_sigsuspend(struct pt_regs *regs, old_sigset_t mask); +extern asmlinkage int sys_sigreturn(struct pt_regs *regs); +extern asmlinkage int sys_rt_sigreturn(struct pt_regs *regs); +extern int sys_rt_sigsuspend(struct pt_regs *regs,sigset_t *unewset, + size_t sigsetsize); +extern int sys_sigaltstack(const stack_t *uss, stack_t *uoss); +/* ./kernel/signal.c */ +extern asmlinkage long sys_rt_sigaction(int sig, + const struct sigaction __user *act, + struct sigaction __user *oact, size_t sigsetsize); -extern unsigned long *sys_call_table[__NR_last_syscall + 1]; -static int syscall_num_args[__NR_last_syscall + 1] = { - [0] = -1, /* setup */ - [__NR_exit] = 1, /* 1 */ - [__NR_fork] = 0, /* 2 */ - [__NR_read] = 3, /* 3 */ - [__NR_write] = 3, /* 4 */ - [__NR_open] = 3, /* 5 */ - [__NR_close] = 1, /* 6 */ - [__NR_waitpid] = 3, /* 7 */ - [__NR_creat] = 2, /* 8 */ - [__NR_link] = 2, /* 9 */ - [__NR_unlink] = 1, /* 10 */ - [__NR_execve] = 3, /* 11 */ - [__NR_chdir] = 1, /* 12 */ - [__NR_time] = 1, /* 13 */ - [__NR_mknod] = 3, /* 14 */ - [__NR_chmod] = 2, /* 15 */ - [__NR_lchown] = 3, /* 16 */ - [17] = -1, /* break */ - [18] = -1, /* oldstat */ - [__NR_lseek] = 3, /* 19 */ - [__NR_getpid] = 0, /* 20 */ - [__NR_mount] = 5, /* 21 */ - [__NR_umount] = 2, /* 22 */ - [__NR_setuid] = 1, /* 23 */ - [__NR_getuid] = 0, /* 24 */ - [__NR_stime] = 1, /* 25 */ - [__NR_ptrace] = 4, /* 26 */ - [__NR_alarm] = 1, /* 27 */ - [28] =-1, /* oldfstat */ - [__NR_pause] = 0, /* 29 */ - [__NR_utime] = 2, /* 30 */ - [31] = -1, /* stty */ - [32] = -1, /* gtty */ - [__NR_access] = 2, /* 33 */ - [__NR_nice] = 1, /* 34 */ - [__NR_ftime] = 1, /* 35 */ - [__NR_sync] = 0, /* 36 */ - [__NR_kill] = 2, /* 37 */ - [__NR_rename] = 2, /* 38 */ - [__NR_mkdir] = 2, /* 39 */ - [__NR_rmdir] = 1, /* 40 */ - [__NR_dup] = 1, /* 41 */ - [__NR_pipe] = 1, /* 42 */ - [__NR_times] = 1, /* 43 */ - [44] = -1, /* prof(ile) */ - [__NR_brk] = 1, /* 45 */ - [__NR_setgid] = 1, /* 46 */ - [__NR_getgid] = 0, /* 47 */ - [__NR_signal] = 2, /* 48 */ - [__NR_geteuid] = 0, /* 49 */ - [__NR_getegid] = 0, /* 50 */ - [__NR_acct] = 1, /* 51 */ - [__NR_umount2] = 2, /* 52 */ - [53] = -1, /* lock */ - [__NR_ioctl] = 3, /* 54 */ - [__NR_fcntl] = 3, /* 55 */ - [56] = -1, /* mpx */ - [__NR_setpgid] = 2, /* 57 */ - [__NR_ulimit] = 2, /* 58 */ - [59] = -1, /* oldolduname */ - [__NR_umask] = 1, /* 60 */ - [__NR_chroot] = 1, /* 61 */ - [__NR_ustat] = 2, /* 62 */ - [__NR_dup2] = 2, /* 63 */ - [__NR_getppid] = 0, /* 64 */ - [__NR_getpgrp] = 0, /* 65 */ - [__NR_setsid] = 0, /* 66 */ - [__NR_sigaction] = 3, /* 67 */ - [__NR_sgetmask] = 0, /* 68 */ - [__NR_ssetmask] = 1, /* 69 */ - [__NR_setreuid] = 2, /* 70 */ - [__NR_setregid] = 2, /* 71 */ - [__NR_sigsuspend] = 1, /* 72 */ - [__NR_sigpending] = 1, /* 73 */ - [__NR_sethostname] = 2, /* 74 */ - [__NR_setrlimit] = 2, /* 75 */ - [76] = -1, /* old_getrlimit */ - [__NR_getrusage] = 2, /* 77 */ - [__NR_gettimeofday] = 2, /* 78 */ - [__NR_settimeofday] = 2, /* 79 */ - [__NR_getgroups] = 2, /* 80 */ - [__NR_setgroups] = 2, /* 81 */ - [82] = -1, /* select */ - [__NR_symlink] = 2, /* 83 */ - [84] = -1, /* old_lstat */ - [__NR_readlink] = 3, /* 85 */ - [__NR_uselib] = 1, /* 86 */ - [__NR_swapon] = 2, /* 87 */ - [__NR_reboot] = 4, /* 88 */ - [__NR_readdir] = 3, /* 89 */ - [__NR_mmap] = 6, /* 90 */ - [__NR_munmap] = 2, /* 91 */ - [__NR_truncate] = 2, /* 92 */ - [__NR_ftruncate] = 2, /* 93 */ - [__NR_fchmod] = 2, /* 94 */ - [__NR_fchown] = 3, /* 95 */ - [__NR_getpriority] = 2, /* 96 */ - [__NR_setpriority] = 3, /* 97 */ - [98] = -1, /* profil */ - [__NR_statfs] = 2, /* 99 */ - [__NR_fstatfs] = 2, /* 100 */ - [101] = -1, /* ioperm */ - [__NR_socketcall] = 2, /* 102 */ - [__NR_syslog] = 3, /* 103 */ - [__NR_setitimer] = 3, /* 104 */ - [__NR_getitimer] = 2, /* 105 */ - [__NR_stat] = 2, /* 106 */ - [__NR_lstat] = 2, /* 107 */ - [__NR_fstat] = 2, /* 108 */ - [109] = -1, /* olduname */ - [110] = -1, /* iopl */ - [__NR_vhangup] = 0, /* 111 */ - [112] = -1, /* idle */ - [113] = -1, /* vm86old */ - [__NR_wait4] = 4, /* 114 */ - [__NR_swapoff] = 2, /* 115 */ - [__NR_sysinfo] = 1, /* 116 */ - [__NR_ipc] = 6, /* 117 */ - [__NR_fsync] = 1, /* 118 */ - [__NR_sigreturn] = 0, /* 119 */ - [__NR_clone] = 2, /* 120 */ - [__NR_setdomainname] = 2, /* 121 */ - [__NR_uname] = 1, /* 122 */ - [123] = -1, /* modify_ldt */ - [__NR_adjtimex] = 1, /* 124 */ - [__NR_mprotect] = 3, /* 125 */ - [__NR_sigprocmask] = 3, /* 126 */ - [127] = -1, /* create_module */ - [__NR_init_module] = 5, /* 128 */ - [__NR_delete_module] = 3, /* 129 */ - [130] = -1, /* get_kernel_syms */ - [__NR_quotactl] = 4, /* 131 */ - [__NR_getpgid] = 1, /* 132 */ - [__NR_fchdir] = 1, /* 133 */ - [__NR_bdflush] = 2, /* 134 */ - [__NR_sysfs] = 3, /* 135 */ - [__NR_personality] = 1, /* 136 */ - [137] = -1, /* afs_syscall */ - [__NR_setfsuid] = 1, /* 138 */ - [__NR_setfsgid] = 1, /* 139 */ - [__NR__llseek] = 5, /* 140 */ - [__NR_getdents] = 3, /* 141 */ - [__NR__newselect] = 5, /* 142 */ - [__NR_flock] = 2, /* 143 */ - [__NR_msync] = 3, /* 144 */ - [__NR_readv] = 3, /* 145 */ - [__NR_writev] = 3, /* 146 */ - [__NR_getsid] = 1, /* 147 */ - [__NR_fdatasync] = 1, /* 148 */ - [__NR__sysctl] = 1, /* 149 */ - [__NR_mlock] = 2, /* 150 */ - [__NR_munlock] = 2, /* 151 */ - [__NR_mlockall] = 1, /* 152 */ - [__NR_munlockall] = 0, /* 153 */ - [__NR_sched_setparam] = 2, /* 154 */ - [__NR_sched_getparam] = 2, /* 155 */ - [__NR_sched_setscheduler] = 3, /* 156 */ - [__NR_sched_getscheduler] = 1, /* 157 */ - [__NR_sched_yield] = 0, /* 158 */ - [__NR_sched_get_priority_max] = 1, /* 159 */ - [__NR_sched_get_priority_min] = 1, /* 160 */ - [__NR_sched_rr_get_interval] = 2, /* 161 */ - [__NR_nanosleep] = 2, /* 162 */ - [__NR_mremap] = 4, /* 163 */ - [__NR_setresuid] = 3, /* 164 */ - [__NR_getresuid] = 3, /* 165 */ - [166] = -1, /* vm86 */ - [167] = -1, /* query_module */ - [__NR_poll] = 3, /* 168 */ - [__NR_nfsservctl] = 3, /* 169 */ - [__NR_setresgid] = 3, /* 170 */ - [__NR_getresgid] = 3, /* 171 */ - [__NR_prctl] = 5, /* 172 */ - [__NR_rt_sigreturn] = 0, /* 173 */ - [__NR_rt_sigaction] = 4, /* 174 */ - [__NR_rt_sigprocmask] = 4, /* 175 */ - [__NR_rt_sigpending] = 2, /* 176 */ - [__NR_rt_sigtimedwait] = 4, /* 177 */ - [__NR_rt_sigqueueinfo] = 3, /* 178 */ - [__NR_rt_sigsuspend] = 2, /* 179 */ - [__NR_pread64] = 4, /* 180 */ - [__NR_pwrite64] = 4, /* 181 */ - [__NR_chown] = 3, /* 182 */ - [__NR_getcwd] = 2, /* 183 */ - [__NR_capget] = 2, /* 184 */ - [__NR_capset] = 2, /* 185 */ - [__NR_sigaltstack] = 2, /* 186 */ - [__NR_sendfile] = 4, /* 187 */ - [188] = -1, /* streams1 / getpmesg */ - [189] = -1, /* streams2 / putpmesg */ - [__NR_vfork] = 0, /* 190 */ - [__NR_getrlimit] = 2, /* 191 */ - [__NR_mmap2] = 6, /* 192 */ - [__NR_truncate64] = 2, /* 193 */ - [__NR_ftruncate64] = 2, /* 194 */ - [__NR_stat64] = 2, /* 195 */ - [__NR_lstat64] = 2, /* 196 */ - [__NR_fstat64] = 2, /* 197 */ - [__NR_lchown32] = 3, /* 198 */ - [__NR_getuid32] = 0, /* 199 */ - [__NR_getgid32] = 0, /* 200 */ - [__NR_geteuid32] = 0, /* 201 */ - [__NR_getegid32] = 0, /* 202 */ - [__NR_setreuid32] = 2, /* 203 */ - [__NR_setregid32] = 2, /* 204 */ - [__NR_getgroups32] = 2, /* 205 */ - [__NR_setgroups32] = 2, /* 206 */ - [__NR_fchown32] = 3, /* 207 */ - [__NR_setresuid32] = 3, /* 208 */ - [__NR_getresuid32] = 3, /* 209 */ - [__NR_setresgid32] = 3, /* 210 */ - [__NR_getresgid32] = 3, /* 211 */ - [__NR_chown32] = 3, /* 212 */ - [__NR_setuid32] = 1, /* 213 */ - [__NR_setgid32] = 1, /* 214 */ - [__NR_setfsuid32] = 1, /* 215 */ - [__NR_setfsgid32] = 1, /* 216 */ - [__NR_pivot_root] = 2, /* 217 */ - [__NR_mincore] = 3, /* 218 */ - [__NR_madvise] = 3, /* 219 */ - [__NR_getdents64] = 3, /* 220 */ - [__NR_fcntl64] = 3, /* 221 */ - [__NR_tkill] = 3, /* 222 */ - [__NR_statfs64] = 2, /* 223 */ - [__NR_fstatfs64] = 2, /* 224 */ - [__NR_vserver] = 3, /* 225 */ +static struct { + unsigned long *sc_func; + unsigned int nr_args; +} syscall[] = { +#define SC(num, func, args) \ + [num] = { \ + .sc_func = (unsigned long *) &func, \ + .nr_args = args, \ + } + SC (__NR_exit, sys_exit, 1), + SC (__NR_fork, sys_fork, 0), + SC (__NR_read, sys_read, 3), + SC (__NR_write, sys_write, 3), + SC (__NR_open, sys_open, 3), + SC (__NR_close, sys_close, 1), + SC (__NR_waitpid, sys_waitpid, 3), + SC (__NR_creat, sys_creat, 2), + SC (__NR_link, sys_link, 2), + SC (__NR_unlink, sys_unlink, 1), + SC (__NR_execve, sys_execve, 3), + SC (__NR_chdir, sys_chdir, 1), + SC (__NR_time, sys_time, 1), + SC (__NR_mknod, sys_mknod, 3), + SC (__NR_chmod, sys_chmod, 2), + SC (__NR_lchown, sys_lchown16, 3), + SC (__NR_lseek, sys_lseek, 3), + SC (__NR_getpid, sys_getpid, 0), + SC (__NR_mount, sys_mount, 5), + SC (__NR_umount, sys_oldumount, 2), + SC (__NR_setuid, sys_setuid16, 1), + SC (__NR_getuid, sys_getuid16, 0), + SC (__NR_stime, sys_stime, 1), + SC (__NR_ptrace, sys_ptrace, 4), + SC (__NR_alarm, sys_alarm, 1), + SC (__NR_pause, sys_pause, 0), + SC (__NR_utime, sys_utime, 2), + SC (__NR_access, sys_access, 2), + SC (__NR_nice, sys_nice, 1), + SC (__NR_sync, sys_sync, 0), + SC (__NR_kill, sys_kill, 2), + SC (__NR_rename, sys_rename, 2), + SC (__NR_mkdir, sys_mkdir, 2), + SC (__NR_mkdir, sys_mkdir, 2), + SC (__NR_rmdir, sys_rmdir, 1), + SC (__NR_dup, sys_dup, 1), + SC (__NR_pipe, sys_pipe, 1), + SC (__NR_times, sys_times, 1), + SC (__NR_brk, sys_brk, 1), + SC (__NR_setgid, sys_setgid16, 1), + SC (__NR_getgid, sys_getgid16, 0), + SC (__NR_signal, sys_signal, 2), + SC (__NR_geteuid, sys_geteuid16, 0), + SC (__NR_getegid, sys_getegid16, 0), + SC (__NR_acct, sys_acct, 1), + SC (__NR_umount2, sys_oldumount, 2), + SC (__NR_ioctl, sys_ioctl, 3), + SC (__NR_fcntl, sys_fcntl, 3), + SC (__NR_setpgid, sys_setpgid, 2), + SC (__NR_umask, sys_umask, 1), + SC (__NR_chroot, sys_chroot, 1), + SC (__NR_ustat, sys_ustat, 2), + SC (__NR_dup2, sys_dup2, 2), + SC (__NR_getppid, sys_getppid, 0), + SC (__NR_getpgrp, sys_getpgrp, 0), + SC (__NR_setsid, sys_setsid, 0), + SC (__NR_sigaction, sys_sigaction, 3), + SC (__NR_sgetmask, sys_sgetmask, 0), + SC (__NR_ssetmask, sys_ssetmask, 1), + SC (__NR_setreuid, sys_setreuid16, 2), + SC (__NR_setregid, sys_setregid16, 2), + SC (__NR_sigsuspend, sys_sigsuspend, 1), + SC (__NR_sigpending, sys_sigpending, 1), + SC (__NR_sethostname, sys_sethostname, 2), + SC (__NR_setrlimit, sys_setrlimit, 2), + SC (__NR_old_getrlimit, sys_old_getrlimit, 2), + SC (__NR_getrusage, sys_getrusage, 2), + SC (__NR_gettimeofday, sys_gettimeofday, 2), + SC (__NR_settimeofday, sys_settimeofday, 2), + SC (__NR_getgroups, sys_getgroups16, 2), + SC (__NR_setgroups, sys_setgroups16, 2), + SC (__NR_symlink, sys_symlink, 2), + SC (__NR_readlink, sys_readlink, 3), + SC (__NR_uselib, sys_uselib, 1), + SC (__NR_swapon, sys_swapon, 2), + SC (__NR_reboot, sys_reboot, 4), + SC (__NR_mmap, sys_mmap, 6), + SC (__NR_munmap, sys_munmap, 2), + SC (__NR_truncate, sys_truncate, 2), + SC (__NR_ftruncate, sys_ftruncate, 2), + SC (__NR_fchmod, sys_fchmod, 2), + SC (__NR_fchown, sys_fchown16, 3), + SC (__NR_getpriority, sys_getpriority, 2), + SC (__NR_setpriority, sys_setpriority, 3), + SC (__NR_statfs, sys_statfs, 2), + SC (__NR_fstatfs, sys_fstatfs, 2), + SC (__NR_socketcall, sys_socketcall, 2), + SC (__NR_syslog, sys_syslog, 3), + SC (__NR_setitimer, sys_setitimer, 3), + SC (__NR_getitimer, sys_getitimer, 2), + SC (__NR_stat, sys_newstat, 2), + SC (__NR_lstat, sys_newlstat, 2), + SC (__NR_fstat, sys_newfstat, 2), + SC (__NR_vhangup, sys_vhangup, 0), + SC (__NR_wait4, sys_wait4, 4), + SC (__NR_swapoff, sys_swapoff, 2), + SC (__NR_sysinfo, sys_sysinfo, 1), + SC (__NR_ipc, sys_ipc, 6), + SC (__NR_fsync, sys_fsync, 1), + SC (__NR_sigreturn, sys_sigreturn, 0), + SC (__NR_clone, sys_clone, 2), + SC (__NR_setdomainname, sys_setdomainname, 2), + SC (__NR_uname, sys_newuname, 1), + SC (__NR_adjtimex, sys_adjtimex, 1), + SC (__NR_mprotect, sys_mprotect, 3), + SC (__NR_sigprocmask, sys_sigprocmask, 3), + SC (__NR_init_module, sys_init_module, 5), + SC (__NR_delete_module, sys_delete_module, 3), + SC (__NR_quotactl, sys_quotactl, 4), + SC (__NR_getpgid, sys_getpgid, 1), + SC (__NR_fchdir, sys_fchdir, 1), + SC (__NR_bdflush, sys_bdflush, 2), + SC (__NR_sysfs, sys_sysfs, 3), + SC (__NR_personality, sys_personality, 1), + SC (__NR_setfsuid, sys_setfsuid16, 1), + SC (__NR_setfsgid, sys_setfsgid16, 1), + SC (__NR__llseek, sys_llseek, 5), + SC (__NR_getdents, sys_getdents, 3), + SC (__NR__newselect, sys_select, 5), + SC (__NR_flock, sys_flock, 2), + SC (__NR_msync, sys_msync, 3), + SC (__NR_readv, sys_readv, 3), + SC (__NR_writev, sys_writev, 3), + SC (__NR_getsid, sys_getsid, 1), + SC (__NR_fdatasync, sys_fdatasync, 1), + SC (__NR__sysctl, sys_sysctl, 1), + SC (__NR_mlock, sys_mlock, 2), + SC (__NR_munlock, sys_munlock, 2), + SC (__NR_mlockall, sys_mlockall, 1), + SC (__NR_munlockall, sys_munlockall, 0), + SC (__NR_nanosleep, sys_nanosleep, 2), + SC (__NR_mremap, sys_mremap, 4), + SC (__NR_setresuid, sys_setresuid16, 3), + SC (__NR_getresuid, sys_getresuid16, 3), + SC (__NR_poll, sys_poll, 3), + SC (__NR_nfsservctl, sys_nfsservctl, 3), + SC (__NR_setresgid, sys_setresgid16, 3), + SC (__NR_getresgid, sys_getresgid16, 3), + SC (__NR_prctl, sys_prctl, 5), + SC (__NR_sched_setparam, sys_sched_setparam, 2), + SC (__NR_sched_getparam, sys_sched_getparam, 2), + SC (__NR_sched_setscheduler, sys_sched_setscheduler, 3), + SC (__NR_sched_getscheduler, sys_sched_getscheduler, 1), + SC (__NR_sched_yield, sys_sched_yield, 0), + SC (__NR_sched_get_priority_max,sys_sched_get_priority_max, 1), + SC (__NR_sched_get_priority_min,sys_sched_get_priority_min, 1), + SC (__NR_sched_rr_get_interval, sys_sched_rr_get_interval, 2), + SC (__NR_rt_sigreturn, sys_rt_sigreturn, 0), + SC (__NR_rt_sigaction, sys_rt_sigaction, 4), + SC (__NR_rt_sigprocmask, sys_rt_sigprocmask, 4), + SC (__NR_rt_sigpending, sys_rt_sigpending, 2), + SC (__NR_rt_sigtimedwait, sys_rt_sigtimedwait, 4), + SC (__NR_rt_sigqueueinfo, sys_rt_sigqueueinfo, 3), + SC (__NR_rt_sigsuspend, sys_rt_sigsuspend, 2), + SC (__NR_pread64, sys_pread64, 4), + SC (__NR_pwrite64, sys_pwrite64, 4), + SC (__NR_chown, sys_chown16, 3), + SC (__NR_getcwd, sys_getcwd, 2), + SC (__NR_capget, sys_capget, 2), + SC (__NR_capset, sys_capset, 2), + SC (__NR_sigaltstack, sys_sigaltstack, 2), + SC (__NR_sendfile, sys_sendfile, 4), + SC (__NR_vfork, sys_vfork, 0), + SC (__NR_getrlimit, sys_getrlimit, 2), + SC (__NR_mmap2, sys_mmap2, 6), + SC (__NR_truncate64, sys_truncate64, 2), + SC (__NR_ftruncate64, sys_ftruncate64, 2), + SC (__NR_stat64, sys_stat64, 2), + SC (__NR_lstat64, sys_lstat64, 2), + SC (__NR_fstat64, sys_fstat64, 2), + SC (__NR_lchown32, sys_lchown, 3), + SC (__NR_getuid32, sys_getuid, 0), + SC (__NR_getgid32, sys_getgid, 0), + SC (__NR_geteuid32, sys_geteuid, 0), + SC (__NR_getegid32, sys_getegid, 0), + SC (__NR_setreuid32, sys_setreuid, 2), + SC (__NR_setregid32, sys_setregid, 2), + SC (__NR_getgroups32, sys_getgroups, 2), + SC (__NR_setgroups32, sys_setgroups, 2), + SC (__NR_fchown32, sys_fchown, 3), + SC (__NR_setresuid32, sys_setresuid, 3), + SC (__NR_getresuid32, sys_getresuid, 3), + SC (__NR_setresgid32, sys_setresgid, 3), + SC (__NR_getresgid32, sys_getresgid, 3), + SC (__NR_chown32, sys_chown, 3), + SC (__NR_setuid32, sys_setuid, 1), + SC (__NR_setgid32, sys_setgid, 1), + SC (__NR_setfsuid32, sys_setfsuid, 1), + SC (__NR_setfsgid32, sys_setfsgid, 1), + SC (__NR_pivot_root, sys_pivot_root, 2), + SC (__NR_mincore, sys_mincore, 3), + SC (__NR_madvise, sys_madvise, 3), + SC (__NR_getdents64, sys_getdents64, 3), + SC (__NR_fcntl64, sys_fcntl64, 3), + SC (__NR_tkill, sys_tkill, 3), + SC (__NR_statfs64, sys_statfs64, 2), + SC (__NR_fstatfs64, sys_fstatfs64, 2), +#undef SC }; - - void syscall_handler(struct pt_regs *regs, void *excep_info) { unsigned int sc_number; @@ -271,8 +279,8 @@ * Check if the called syscall is known at all and that it isn't * a no-longer supported legacy syscall. */ - if (unlikely (sc_number > __NR_last_syscall || - syscall_num_args[sc_number] == -1)) { + if (unlikely (sc_number >= ARRAY_SIZE (syscall) || + !syscall[sc_number].sc_func)) { printk (KERN_DEBUG "%s(%d): syscall %d out of range or not " "implemented.\n", current->comm, current->pid, sc_number); @@ -322,10 +330,10 @@ /* * Check number of syscall arguments */ - if (unlikely (syscall_num_args[sc_number] != nr_args)) { + if (unlikely (syscall[sc_number].nr_args != nr_args)) { printk (KERN_DEBUG "%s(%d): stack mismatch (should=%d, caller=%d) on syscall %d\n", current->comm, current->pid, - syscall_num_args[sc_number], nr_args, sc_number); + syscall[sc_number].nr_args, nr_args, sc_number); printk (KERN_DEBUG "Please report to " "<lin...@pe...>.\n"); #ifdef CONFIG_DEBUG_VAX_CHECK_CHMx_ARGS_ABORT @@ -358,16 +366,13 @@ "g"(nr_args * 4), /* 2 - number of syscall argument bytes to copy */ "g"(nr_args + 1), /* 3 - number of syscall arguments + explicit "regs" ptr*/ "r"(user_ap), /* 4 - source for syscall arguments */ - "g"(*sys_call_table[sc_number]), /* 5 - syscall function ptr */ + "g"(*syscall[sc_number].sc_func), /* 5 - syscall function ptr */ "g"(-EFAULT) /* 6 - Return -EFAULT if calling the syscall failed */ : "r0", "r1", "r2", "r3", "r4", "r5"); -// printk("syscall %d returned %ld (0x%08lx)\n", sc_number, regs->r0, regs->r0); - return; } - int sys_pipe(unsigned long *fildes) { int fd[2]; |