我试图了解在 Linux 机器上调用系统调用的方式。为此,我在 QEMU 模拟器上运行了一台带有Linux 3.0.43 内核的客户机。
为了知道系统调用号,我在 qemu 中检测了中断函数(do_interrupt_all()
在target-i386/seg_helper.c
--- 不是很重要)。基本上每当我收到一个 int 0x80 中断时,我都会在 EAX 寄存器中打印该值。运行的输出给出了系统调用号。我希望首先对 init 进程进行 exec 系统调用。然后是一个 fork 和一些 `brk 系统调用。但是,我不确定这是否是我得到的。我在这里打印前 100 个系统调用号。我的客人是 64 位机器。这是我的内核的在线代码探索。
: 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