系统调用功能号对应函数疑惑
58 #ifdef __LIBRARY__ 59 60 #define __NR_setup 0 /* used only by init, to get system going */ 61 #define __NR_exit 1 62 #define __NR_fork 2 63 #define __NR_read 3 64 #define __NR_write 4 65 #define __NR_open 5 66 #define __NR_close 6 67 #define __NR_waitpid 7 68 #define __NR_creat 8 69 #define __NR_link 9 70 #define __NR_unlink 10 71 #define __NR_execve 11 72 #define __NR_chdir 12 73 #define __NR_time 13 74 #define __NR_mknod 14 75 #define __NR_chmod 15 76 #define __NR_chown 16 77 #define __NR_break 17 78 #define __NR_stat 18 79 #define __NR_lseek 19 80 #define __NR_getpid 20 81 #define __NR_mount 21 82 #define __NR_umount 22 83 #define __NR_setuid 23 84 #define __NR_getuid 24 85 #define __NR_stime 25 86 #define __NR_ptrace 26 87 #define __NR_alarm 27 88 #define __NR_fstat 28 89 #define __NR_pause 29 90 #define __NR_utime 30 91 #define __NR_stty 31 92 #define __NR_gtty 32 93 #define __NR_access 33 94 #define __NR_nice 34 95 #define __NR_ftime 35 96 #define __NR_sync 36 97 #define __NR_kill 37 98 #define __NR_rename 38 99 #define __NR_mkdir 39 100 #define __NR_rmdir 40 101 #define __NR_dup 41 102 #define __NR_pipe 42 103 #define __NR_times 43 104 #define __NR_prof 44 105 #define __NR_brk 45 106 #define __NR_setgid 46 107 #define __NR_getgid 47 108 #define __NR_signal 48 109 #define __NR_geteuid 49 110 #define __NR_getegid 50 111 #define __NR_acct 51 112 #define __NR_phys 52 113 #define __NR_lock 53 114 #define __NR_ioctl 54 115 #define __NR_fcntl 55 116 #define __NR_mpx 56 117 #define __NR_setpgid 57 118 #define __NR_ulimit 58 119 #define __NR_uname 59 120 #define __NR_umask 60 121 #define __NR_chroot 61 122 #define __NR_ustat 62 123 #define __NR_dup2 63 124 #define __NR_getppid 64 125 #define __NR_getpgrp 65 126 #define __NR_setsid 66 127 #define __NR_sigaction 67 128 #define __NR_sgetmask 68 129 #define __NR_ssetmask 69 130 #define __NR_setreuid 70 131 #define __NR_setregid 71 132 133 #define _syscall0(type,name) \ 134 type name(void) \ 135 { \ 136 long __res; \ 137 __asm__ volatile ("int $0x80" \ 138 : "=a" (__res) \ 139 : "" (__NR_##name)); \ 140 if (__res >= 0) \ 141 return (type) __res; \ 142 errno = -__res; \ 143 return -1; \ 144 } 145 146 #define _syscall1(type,name,atype,a) \ 147 type name(atype a) \ 148 { \ 149 long __res; \ 150 __asm__ volatile ("int $0x80" \ 151 : "=a" (__res) \ 152 : "" (__NR_##name),"b" ((long)(a))); \ 153 if (__res >= 0) \ 154 return (type) __res; \ 155 errno = -__res; \ 156 return -1; \ 157 } 158 159 #define _syscall2(type,name,atype,a,btype,b) \ 160 type name(atype a,btype b) \ 161 { \ 162 long __res; \ 163 __asm__ volatile ("int $0x80" \ 164 : "=a" (__res) \ 165 : "" (__NR_##name),"b" ((long)(a)),"c" ((long)(b))); \ 166 if (__res >= 0) \ 167 return (type) __res; \ 168 errno = -__res; \ 169 return -1; \ 170 } 171 172 #define _syscall3(type,name,atype,a,btype,b,ctype,c) \ 173 type name(atype a,btype b,ctype c) \ 174 { \ 175 long __res; \ 176 __asm__ volatile ("int $0x80" \ 177 : "=a" (__res) \ 178 : "" (__NR_##name),"b" ((long)(a)),"c" ((long)(b)),"d" ((long)(c))); \ 179 if (__res>=0) \ 180 return (type) __res; \ 181 errno=-__res; \ 182 return -1; \ 183 } 184 185 #endif /* __LIBRARY__ */
系统编号,对应下边sys_call_table[] -----0.11上边说的暂且这么理解//include/unistd.h
1 extern int sys_setup(); 2 extern int sys_exit(); 3 extern int sys_fork(); 4 extern int sys_read(); 5 extern int sys_write(); 6 extern int sys_open(); 7 extern int sys_close(); 8 extern int sys_waitpid(); 9 extern int sys_creat(); 10 extern int sys_link(); 11 extern int sys_unlink(); 12 extern int sys_execve(); 13 extern int sys_chdir(); 14 extern int sys_time(); 15 extern int sys_mknod(); 16 extern int sys_chmod(); 17 extern int sys_chown(); 18 extern int sys_break(); 19 extern int sys_stat(); 20 extern int sys_lseek(); 21 extern int sys_getpid(); 22 extern int sys_mount(); 23 extern int sys_umount(); 24 extern int sys_setuid(); 25 extern int sys_getuid(); 26 extern int sys_stime(); 27 extern int sys_ptrace(); 28 extern int sys_alarm(); 29 extern int sys_fstat(); 30 extern int sys_pause(); 31 extern int sys_utime(); 32 extern int sys_stty(); 33 extern int sys_gtty(); 34 extern int sys_access(); 35 extern int sys_nice(); 36 extern int sys_ftime(); 37 extern int sys_sync(); 38 extern int sys_kill(); 39 extern int sys_rename(); 40 extern int sys_mkdir(); 41 extern int sys_rmdir(); 42 extern int sys_dup(); 43 extern int sys_pipe(); 44 extern int sys_times(); 45 extern int sys_prof(); 46 extern int sys_brk(); 47 extern int sys_setgid(); 48 extern int sys_getgid(); 49 extern int sys_signal(); 50 extern int sys_geteuid(); 51 extern int sys_getegid(); 52 extern int sys_acct(); 53 extern int sys_phys(); 54 extern int sys_lock(); 55 extern int sys_ioctl(); 56 extern int sys_fcntl(); 57 extern int sys_mpx(); 58 extern int sys_setpgid(); 59 extern int sys_ulimit(); 60 extern int sys_uname(); 61 extern int sys_umask(); 62 extern int sys_chroot(); 63 extern int sys_ustat(); 64 extern int sys_dup2(); 65 extern int sys_getppid(); 66 extern int sys_getpgrp(); 67 extern int sys_setsid(); 68 extern int sys_sigaction(); 69 extern int sys_sgetmask(); 70 extern int sys_ssetmask(); 71 extern int sys_setreuid(); 72 extern int sys_setregid(); 73 74 fn_ptr sys_call_table[] = { sys_setup, sys_exit, sys_fork, sys_read, 75 sys_write, sys_open, sys_close, sys_waitpid, sys_creat, sys_link, 76 sys_unlink, sys_execve, sys_chdir, sys_time, sys_mknod, sys_chmod, 77 sys_chown, sys_break, sys_stat, sys_lseek, sys_getpid, sys_mount, 78 sys_umount, sys_setuid, sys_getuid, sys_stime, sys_ptrace, sys_alarm, 79 sys_fstat, sys_pause, sys_utime, sys_stty, sys_gtty, sys_access, 80 sys_nice, sys_ftime, sys_sync, sys_kill, sys_rename, sys_mkdir, 81 sys_rmdir, sys_dup, sys_pipe, sys_times, sys_prof, sys_brk, sys_setgid, 82 sys_getgid, sys_signal, sys_geteuid, sys_getegid, sys_acct, sys_phys, 83 sys_lock, sys_ioctl, sys_fcntl, sys_mpx, sys_setpgid, sys_ulimit, 84 sys_uname, sys_umask, sys_chroot, sys_ustat, sys_dup2, sys_getppid, 85 sys_getpgrp, sys_setsid, sys_sigaction, sys_sgetmask, sys_ssetmask, 86 sys_setreuid,sys_setregid };
上边的系统编号,对应的数组下边的元素-----//include/linux/sys.h