程序14-27 linux/include/linux/sys.h


  1 /*

  2  * Why isn't this a .c file?  Enquiring minds....

  3  */

    /*

     * 为什么这不是一个.c文件?动动脑筋自己想想....

     */

  4

  5 extern int sys_setup();        // 0 - 系统启动初始化设置函数。   (kernel/blk_drv/hd.c)

  6 extern int sys_exit();         // 1 - 程序退出。                 (kernel/exit.c )

  7 extern int sys_fork();         // 2 - 创建进程。                 (kernel/system_call.s)

  8 extern int sys_read();         // 3 - 读文件。                   (fs/read_write.c)

  9 extern int sys_write();        // 4 - 写文件。                   (fs/read_write.c)

 10 extern int sys_open();         // 5 - 打开文件。                 (fs/open.c)

 11 extern int sys_close();        // 6 - 关闭文件。                 (fs/open.c)

 12 extern int sys_waitpid();      // 7 - 等待进程终止。             (kernel/exit.c)

 13 extern int sys_creat();        // 8 - 创建文件。                 (fs/open.c)

 14 extern int sys_link();         // 9 - 创建一个文件的硬连接。     (fs/namei.c)

 15 extern int sys_unlink();       // 10 - 删除一个文件名(或删除文件) (fs/namei.c)

 16 extern int sys_execve();       // 11 - 执行程序。                (kernel/system_call.s)

 17 extern int sys_chdir();        // 12 - 更改当前目录。            (fs/open.c)

 18 extern int sys_time();         // 13 - 取当前时间。              (kernel/sys.c)

 19 extern int sys_mknod();        // 14 - 建立块/字符特殊文件。     (fs/namei.c)

 20 extern int sys_chmod();        // 15 - 修改文件属性。            (fs/open.c)

 21 extern int sys_chown();        // 16 - 修改文件宿主和所属组。    (fs/open.c)

 22 extern int sys_break();        // 17 -                           (kernel/sys.c)*

 23 extern int sys_stat();         // 18 - 使用路径名取文件状态信息。(fs/stat.c)

 24 extern int sys_lseek();        // 19 - 重新定位读/写文件偏移。   (fs/read_write.c)

 25 extern int sys_getpid();       // 20 - 取进程id               (kernel/sched.c)

 26 extern int sys_mount();        // 21 - 安装文件系统。            (fs/super.c)

 27 extern int sys_umount();       // 22 - 卸载文件系统。            (fs/super.c)

 28 extern int sys_setuid();       // 23 - 设置进程用户id         (kernel/sys.c)

 29 extern int sys_getuid();       // 24 - 取进程用户id           (kernel/sched.c)

 30 extern int sys_stime();        // 25 - 设置系统时间日期。        (kernel/sys.c)*

 31 extern int sys_ptrace();       // 26 - 程序调试。                (kernel/sys.c)*

 32 extern int sys_alarm();        // 27 - 设置报警。                (kernel/sched.c)

 33 extern int sys_fstat();        // 28 - 使用文件句柄取文件的状态信息。(fs/stat.c)

 34 extern int sys_pause();        // 29 - 暂停进程运行。            (kernel/sched.c)

 35 extern int sys_utime();        // 30 - 改变文件的访问和修改时间。(fs/open.c)

 36 extern int sys_stty();         // 31 - 修改终端行设置。          (kernel/sys.c)*

 37 extern int sys_gtty();         // 32 - 取终端行设置信息。        (kernel/sys.c)*

 38 extern int sys_access();       // 33 - 检查用户对一个文件的访问权限。(fs/open.c)

 39 extern int sys_nice();         // 34 - 设置进程执行优先权。      (kernel/sched.c)

 40 extern int sys_ftime();        // 35 - 取日期和时间。            (kernel/sys.c)*

 41 extern int sys_sync();         // 36 - 同步高速缓冲与设备中数据。(fs/buffer.c)

 42 extern int sys_kill();         // 37 - 终止一个进程。            (kernel/exit.c)

 43 extern int sys_rename();       // 38 - 更改文件名。              (kernel/sys.c)*

 44 extern int sys_mkdir();        // 39 - 创建目录。                (fs/namei.c)

 45 extern int sys_rmdir();        // 40 - 删除目录。                (fs/namei.c)

 46 extern int sys_dup();          // 41 - 复制文件句柄。            (fs/fcntl.c)

 47 extern int sys_pipe();         // 42 - 创建管道。                (fs/pipe.c)

 48 extern int sys_times();        // 43 - 取运行时间。              (kernel/sys.c)

 49 extern int sys_prof();         // 44 - 程序执行时间区域。        (kernel/sys.c)*

 50 extern int sys_brk();          // 45 - 修改数据段长度。          (kernel/sys.c)

 51 extern int sys_setgid();       // 46 - 设置进程组id            (kernel/sys.c)

 52 extern int sys_getgid();       // 47 - 取进程组id              (kernel/sched.c)

 53 extern int sys_signal();       // 48 - 信号处理。                (kernel/signal.c)

 54 extern int sys_geteuid();      // 49 - 取进程有效用户id        (kenrl/sched.c)

 55 extern int sys_getegid();      // 50 - 取进程有效组id          (kenrl/sched.c)

 56 extern int sys_acct();         // 51 - 进程记帐。                (kernel/sys.c)*

 57 extern int sys_phys();         // 52 -                           (kernel/sys.c)*

 58 extern int sys_lock();         // 53 -                           (kernel/sys.c)*

 59 extern int sys_ioctl();        // 54 - 设备输入输出控制。        (fs/ioctl.c)

 60 extern int sys_fcntl();        // 55 - 文件句柄控制操作。        (fs/fcntl.c)

 61 extern int sys_mpx();          // 56 -                           (kernel/sys.c)*

 62 extern int sys_setpgid();      // 57 - 设置进程组id            (kernel/sys.c)

 63 extern int sys_ulimit();       // 58 - 统计进程使用资源情况。     (kernel/sys.c)

 64 extern int sys_uname();        // 59 - 显示系统信息。             (kernel/sys.c)

 65 extern int sys_umask();        // 60 - 取默认文件创建属性码。     (kernel/sys.c)

 66 extern int sys_chroot();       // 61 - 改变根目录。               (fs/open.c)

 67 extern int sys_ustat();        // 62 - 取文件系统信息。           (fs/open.c)

 68 extern int sys_dup2();         // 63 - 复制文件句柄。             (fs/fcntl.c)

 69 extern int sys_getppid();      // 64 - 取父进程id              (kernel/sched.c)

 70 extern int sys_getpgrp();      // 65 - 取进程组id,等于getpgid(0)(kernel/sys.c)

 71 extern int sys_setsid();       // 66 - 在新会话中运行程序。       (kernel/sys.c)

 72 extern int sys_sigaction();    // 67 - 改变信号处理过程。         (kernel/signal.c)

 73 extern int sys_sgetmask();     // 68 - 取信号屏蔽码。             (kernel/signal.c)

 74 extern int sys_ssetmask();     // 69 - 设置信号屏蔽码。           (kernel/signal.c)

 75 extern int sys_setreuid();     // 70 - 设置真实与/或有效用户id  (kernel/sys.c)

 76 extern int sys_setregid();     // 71 - 设置真实与/或有效组id    (kernel/sys.c)

 77 extern int sys_sigpending();   // 73 - 检查暂未处理的信号。       (kernel/signal.c)

 78 extern int sys_sigsuspend();   // 72 - 使用新屏蔽码挂起进程。     (kernel/signal.c)

 79 extern int sys_sethostname();  // 74 - 设置主机名。               (kernel/sys.c)

 80 extern int sys_setrlimit();    // 75 - 设置资源使用限制。         (kernel/sys.c)

 81 extern int sys_getrlimit();    // 76 - 取得进程使用资源的限制。   (kernel/sys.c)

 82 extern int sys_getrusage();    // 77 -

 83 extern int sys_gettimeofday(); // 78 - 获取当日时间。             (kernel/sys.c)

 84 extern int sys_settimeofday(); // 79 - 设置当日时间。             (kernel/sys.c)

 85 extern int sys_getgroups();    // 80 - 取得进程所有组标识号。     (kernel/sys.c)

 86 extern int sys_setgroups();    // 81 - 设置进程组标识号数组。     (kernel/sys.c)

 87 extern int sys_select();       // 82 - 等待文件描述符状态改变。   (fs/select.c)

 88 extern int sys_symlink();      // 83 - 建立符号链接。             (fs/namei.c767)

 89 extern int sys_lstat();        // 84 - 取符号链接文件状态。       (fs/stat.c47)

 90 extern int sys_readlink();     // 85 - 读取符号链接文件信息。     (fs/stat.c69)

 91 extern int sys_uselib();       // 86 - 选择共享库。               (fs/exec.c, 42)

 92

    // 系统调用函数指针表。用于系统调用中断处理程序(int 0x80),作为跳转表。

 93 fn_ptr sys_call_table[] = { sys_setup, sys_exit, sys_fork, sys_read,

 94 sys_write, sys_open, sys_close, sys_waitpid, sys_creat, sys_link,

 95 sys_unlink, sys_execve, sys_chdir, sys_time, sys_mknod, sys_chmod,

 96 sys_chown, sys_break, sys_stat, sys_lseek, sys_getpid, sys_mount,

 97 sys_umount, sys_setuid, sys_getuid, sys_stime, sys_ptrace, sys_alarm,

 98 sys_fstat, sys_pause, sys_utime, sys_stty, sys_gtty, sys_access,

 99 sys_nice, sys_ftime, sys_sync, sys_kill, sys_rename, sys_mkdir,

100 sys_rmdir, sys_dup, sys_pipe, sys_times, sys_prof, sys_brk, sys_setgid,

101 sys_getgid, sys_signal, sys_geteuid, sys_getegid, sys_acct, sys_phys,

102 sys_lock, sys_ioctl, sys_fcntl, sys_mpx, sys_setpgid, sys_ulimit,

103 sys_uname, sys_umask, sys_chroot, sys_ustat, sys_dup2, sys_getppid,

104 sys_getpgrp, sys_setsid, sys_sigaction, sys_sgetmask, sys_ssetmask,

105 sys_setreuid,sys_setregid, sys_sigsuspend, sys_sigpending, sys_sethostname,

106 sys_setrlimit, sys_getrlimit, sys_getrusage, sys_gettimeofday,

107 sys_settimeofday, sys_getgroups, sys_setgroups, sys_select, sys_symlink,

108 sys_lstat, sys_readlink, sys_uselib };

109

110 /* So we don't have to do any more manual updating.... */

    /* 下面这样定义后,我们就无需手工更新系统调用数目了 */

111 int NR_syscalls = sizeof(sys_call_table)/sizeof(fn_ptr);

112