2013-01-16 38 views
1

我想了解在Linux機器上調用系統調用的方式。爲此,我在QEMU仿真器上運行了一臺帶有Linux 3.0.43 kernel的客機。針對x86的Linux系統調用調用

爲了解系統調用號碼,我在qemu中插入了中斷函數(do_interrupt_all(),target-i386/seg_helper.c ---不是很重要)。基本上每當我得到一個int 0x80中斷,我打印在EAX寄存器中的值。運行的輸出給出系統呼叫號碼。我期望exec系統首先調用init進程。然後分叉和一些`brk系統調用。但是,我不確定這是否是我得到的。我在這裏打印前100個系統呼叫號碼。我的客人是一臺64位機器。 Here是我的內核的在線代碼探索。

: 11 
: 45 
: 33 
: 192 
: 33 
: 5 
: 197 
: 192 
: 6 
: 33 
: 5 
: 3 
: 197 
: 192 
: 192 
: 192 
: 6 
: 192 
: 243 
: 125 
: 125 
: 125 
: 91 
: 122 
: 45 
: 45 
: 197 
: 5 
: 5 
: 5 
: 5 
: 221 
: 141 
: 141 
: 6 
: 5 
: 5 
: 5 
: 5 
: 5 
: 197 
: 192 
: 3 
: 3 
: 6 
: 91 
: 5 
: 197 
: 192 
: 3 
: 3 
: 6 
: 91 
: 5 
: 197 
: 192 
: 3 
: 3 
: 6 
: 91 
: 5 
: 197 
: 192 
: 3 
: 3 
: 6 
: 91 
: 5 
: 197 
: 192 
: 3 
: 3 
: 6 
: 91 
: 5 
: 197 
: 192 
: 3 
: 3 
: 6 
: 91 
: 5 
: 5 
: 197 
: 192 
: 3 
: 3 
: 6 
: 91 
: 5 
: 197 
: 192 
: 3 
: 3 
: 6 
: 91 
: 5 
: 197 

回答

4

是的,這是你得到了什麼(Linux System Call Numbers64-bit Linux System Call Numbers):

  • 11:sys_exevce,或exec的系統調用
  • 45:sys_brk下malloc的東西
  • 33 :sys_access
  • 192:lgetxattr

依此類推。

+0

還有一件事...什麼是啓動sys_access和lgetxattr系統調用的使用? –

+0

哦是啊...我後來意識到這一點......我愚蠢的錯誤是誤讀系統調用頁面上的行號http://lxr.linux.no/#linux+v3.0.43/arch/x86/kernel/syscall_table_32用於系統呼叫號碼。系統呼叫號碼寫在右側。 :) –

+0

@ prathmesh.kallurkar:哈。那麼,希望一切順利。 – Linuxios