緋葷粺璋冪敤錛坰ystem call錛夋槸鎿嶄綔緋葷粺鍐呮牳鎻愪緵鐨勫嚱鏁幫紝鍦ㄥ唴鏍告佽繍琛岋紙kernel mode錛夛紝灞炰簬鍑芥暟涓殑浣庣瓑涓嬩漢錛岀粓韜唬鍙?527錛岃櫧鐒朵綆絳夛紝浣嗘槸璋佷篃紱諱笉寮浠栦滑錛屽洜涓虹寮浠栦滑灝辨病鍔炴硶鍜屽唴鏍告墦浜ら亾浜嗭紝娌″姙娉曞拰鍐呮牳鎵撲氦閬撳氨浠涔堥兘姝囪彍浜嗐傘傘?br style="word-wrap: break-word; " />linux3.0.0-14鐨勭郴緇熻皟鐢ㄦ湁346涓紝鍙互鍦ㄦ簮鐮佺殑 linux-3.0/arch/x86/kernel/syscall_table_32.S鏂囦歡涓壘鍒版墍鏈夌殑緋葷粺璋冪敤緙栧彿錛屽鏋滀互姹囩紪鐨勬柟娉曡皟鐢ㄨ繖浜涚郴緇熷嚱鏁幫紝閭d箞鏀懼湪EAX瀵勫瓨鍣ㄩ噷闈㈢殑鍊煎氨鏄兂瑕佽皟鐢ㄧ殑鍑芥暟鐨勫彿鐮侊紝鎶婂墠20涓創(chuàng)鍦ㄤ笅闈簡錛屽緢澶氳矊浼煎緢鐔熸?zhèn)夌殑鍚уQ氾級ENTRY(sys_call_table)
.long sys_restart_syscall /* 0 - old "setup()" system call, used for restarting */ .long sys_exit .long ptregs_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 ptregs_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_stat .long sys_lseek .long sys_getpid /* 20 */ 搴撳嚱鏁版槸鍦ㄧ郴緇熻皟鐢ㄤ笂鐨勪竴灞傚寘瑁咃紝榪愯鍦ㄧ敤鎴鋒侊紙user mode錛夛紝鎵撲釜姣旀柟鍚э紝搴撳嚱鏁扮浉褰撲簬鍖呭伐澶達(dá)紝緋葷粺璋冪敤鏄伐浜猴紝鎴戜滑鍙互鑷繁鎵懼伐浜哄垎浠誨姟錛屼絾涓鑸槸鎶婁換鍔℃憡緇欏寘宸ュご錛屽寘宸ュご鍐嶅幓緇欏伐浜哄垎浠誨姟銆?/span> 鎵浠ヨ櫧鐒舵渶緇堟墍鏈夌殑宸ヤ綔閮芥槸緋葷粺璋冪敤鍋氱殑錛屼絾鏄垜浠洿閫氬父鐨勫仛娉曟槸璋冪敤搴撳嚱鏁幫紝鏈変互涓嬪嚑涓師鍥狅細(xì)
- 搴撳嚱鏁版彁渚涗簡鎶借薄錛屾娊璞℃槸涓ソ涓滆タ錛屽彲浠ヨ鎴戜滑鎶婃洿澶氱殑娉ㄦ剰鍔涢泦涓湪瑕佽В鍐抽棶棰樼殑鏍稿績銆?/li>
- 搴撳嚱鏁扮粰鎴戜滑鎻愪緵鐨勬帴鍙f洿浜烘у寲錛屾墍浠ヨ皟鐢ㄨ搗鏉ユ洿鏂逛究銆?/li>
- 璋冪敤搴撳嚱鏁版洿瀹夊叏錛屽唴瀛樼鐞嗕笉鐢ㄨ嚜宸卞お鎿嶅績銆?/li>
- 璋冪敤搴撳嚱鏁版晥鐜囨洿楂橈紝紼嬪簭璺戠殑鏇村揩銆傝櫧鐒跺簱鍑芥暟鏈緇堟槸璋冪敤緋葷粺鍑芥暟錛屼絾鏄簱鍑芥暟浼?xì)姣旀垜浠敤鏇村ソ鐨勬柟寮忔栆?guī)硶璋冪敤緋葷粺鍑芥暟銆?br />
渚嬪瓙鍙互鍙傝冭繖綃囨枃绔?a >http://blog.csdn.net/high_high/article/details/7102081
|