【问题标题】:Is Netlink is the medium for Syscall events?Netlink 是 Syscall 事件的媒介吗?
【发布时间】:2016-05-24 05:46:11
【问题描述】:

当我们在系统调用事件引发时运行应用程序时,系统调用事件是否会通过 net-link 传递给内核?或 netlink 与系统调用有关,请告诉我。

【问题讨论】:

    标签: kernel system-calls


    【解决方案1】:

    每当需要触发 Syscall 时,用户空间程序在按照 syscall 的要求复制寄存器 eax、ebx、ecx、edx、esi 和 edi 中的几个值后执行命令 int 0x80

    int 0x80 执行后,PC 跳转到该软中断的 ISR。

    系统调用例程由set_system_trap_gate(MY_SYSCALL_VECTOR, entry_INT80_32); 设置,您可以在此处查看arch/x86/kernel/traps.c

    内核中Syscall的入口点是entry_INT80_32,可以在arch/x86/entry/entry_32.S找到,它由链接脚本ENTRY(entry_INT80_32)在同一个文件中定义。

    通过这个入口点,您可以检查它是如何复制寄存器 eax、ebx、ecx、edx、esi 和 edi 的值的。然后根据系统调用号移动到特定的系统调用,执行并返回到用户空间。

    【讨论】:

    • 好的,谢谢你的回复,有没有和netlink相关的?
    • 虽然 netlink 也用于用户空间和内核空间之间的通信,但不是在系统调用的情况下。对于系统调用期间内核和用户空间之间的数据传输,仅使用 eax、ebx、ecx、edx、esi 和 edi 寄存器。
    • 谢谢你samrat:)
    • 如果它有帮助,支持或接受答案将不胜感激。谢谢!
    猜你喜欢
    • 2016-11-19
    • 2012-05-21
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多