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
還有一件事...什麼是啓動sys_access和lgetxattr系統調用的使用? –
哦是啊...我後來意識到這一點......我愚蠢的錯誤是誤讀系統調用頁面上的行號http://lxr.linux.no/#linux+v3.0.43/arch/x86/kernel/syscall_table_32用於系統呼叫號碼。系統呼叫號碼寫在右側。 :) –
@ prathmesh.kallurkar:哈。那麼,希望一切順利。 – Linuxios