亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3424 | 回復(fù): 1
打印 上一主題 下一主題

[數(shù)據(jù)結(jié)構(gòu)] linux系統(tǒng)調(diào)用 _sys_call_table 和 sys_call_table 關(guān)系 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2013-05-06 13:26 |只看該作者 |倒序瀏覽
linux系統(tǒng)調(diào)用的地方:

  1. 中斷之后,進(jìn)入_system_call,(定義在linux-0.11/kernel/system_call.s)

  2. _system_call:

  3.        cmpl $nr_system_calls-1,%eax

  4.        ja bad_sys_call

  5.        push %ds

  6.        push %es

  7.        push %fs

  8.        pushl %edx

  9.        pushl %ecx              # push %ebx,%ecx,%edx as parameters

  10.        pushl %ebx              # to the system call

  11.        movl $0x10,%edx         # set up ds,es to kernel space

  12.        mov %dx,%ds

  13.        mov %dx,%es

  14.        movl $0x17,%edx         # fs points to local data space

  15.        mov %dx,%fs

  16.        call [color=Red]_sys_call_table[/color](,%eax,4)

  17.        pushl %eax

  18.        movl _current,%eax

  19.        cmpl $0,state(%eax)             # state

  20.        jne reschedule

  21.        cmpl $0,counter(%eax)           # counter

  22.        je reschedule
復(fù)制代碼

  1. _system_call 根據(jù)系統(tǒng)調(diào)用號,結(jié)合_sys_call_table計算所要調(diào)用的系統(tǒng)調(diào)用的地址,然后就call  (call _sys_call_table(,%eax,4))(sys_call_table[]定義在linux-0.11/include/linux/sys.h)

  2. fn_ptr [color=Red]sys_call_table[/color][] = { sys_setup, sys_exit, sys_fork, sys_read,

  3. sys_write, sys_open, sys_close, sys_waitpid, sys_creat, sys_link,

  4. sys_unlink, sys_execve, sys_chdir, sys_time, sys_mknod, sys_chmod,

  5. sys_chown, sys_break, sys_stat, sys_lseek, sys_getpid, sys_mount,

  6. sys_umount, sys_setuid, sys_getuid, sys_stime, sys_ptrace, sys_alarm,

  7. sys_fstat, sys_pause, sys_utime, sys_stty, sys_gtty, sys_access,

  8. sys_nice, sys_ftime, sys_sync, sys_kill, sys_rename, sys_mkdir,

  9. sys_rmdir, sys_dup, sys_pipe, sys_times, sys_prof, sys_brk, sys_setgid,

  10. sys_getgid, sys_signal, sys_geteuid, sys_getegid, sys_acct, sys_phys,

  11. sys_lock, sys_ioctl, sys_fcntl, sys_mpx, sys_setpgid, sys_ulimit,

  12. sys_uname, sys_umask, sys_chroot, sys_ustat, sys_dup2, sys_getppid,

  13. sys_getpgrp, sys_setsid, sys_sigaction, sys_sgetmask, sys_ssetmask,

  14. sys_setreuid,sys_setregid };
復(fù)制代碼
前面的call _sys_call_table(,%eax,4) 如何找到后面的表 sys_call_table的,我在源碼中找不到有用的信息,謝謝!

論壇徽章:
0
2 [報告]
發(fā)表于 2013-05-07 09:12 |只看該作者
編譯器在編譯C語言的時候,會在每個函數(shù)的名稱前面添加一個下劃線,目的是防止函數(shù)名稱和庫函數(shù)重名。 C專家編程 5.4 章節(jié)interpositioning 講解了原理。至于添加下劃線的方法,是unix C 的規(guī)則。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP