系统调用功能号对应函数疑惑

 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__ */
View Code

 

系统编号,对应下边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 };
View Code

上边的系统编号,对应的数组下边的元素-----//include/linux/sys.h

 

 

posted @ 2013-08-12 16:59  caesarxu  阅读(462)  评论(0编辑  收藏  举报