_dl_sysinfo_int80的目的是什么?

3
我的意思是,为什么不直接发出 int 指令呢?
Dump of assembler code for function execve:
   [omitted]
   0x0806c282 <+18>:    call   *0x80e99f0
   [omitted]
End of assembler dump.
(gdb) disas *0x80e99f0
Dump of assembler code for function _dl_sysinfo_int80:
   0x0806ed70 <+0>: int    $0x80
   0x0806ed72 <+2>: ret    
End of assembler dump.

从我这个不太有经验的角度来看,_dl_sysinfo_int80 除了增加开销外没有任何作用。
1个回答

4
有多种方法来执行系统调用。最古老和最慢的是 int 0x80。优点是它适用于所有系统。后来,英特尔引入了 sysenter,AMD 引入了 syscall 指令。不幸的是,它们不兼容,并且只能在某些芯片上工作。因此,为了使用最佳实现,添加了一级间接性。内核本身通常提供映射到每个进程中的入口代码(vDSO 的一部分)。据我所知,_dl_sysinfo_int80 只是在那些由于某种原因而无法使用内核提供的代码时用作后备。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接