【问题标题】:How to write a kernel space function that invoked by a user space function? [duplicate]如何编写由用户空间函数调用的内核空间函数? [复制]
【发布时间】:2013-06-02 12:27:20
【问题描述】:

我想编写一个内核空间函数,由 Linux 中的用户空间函数调用,如下所示:

// kernel space function.
void hello_kernel()
{
  printk(KERN_INFO "Hello kernel space.");
  printk(KERN_INFO "I can do any thing!");
}

// user space function
void hello_kernel();
int main()
{
  printf("Invoking a kernel space function.");
  hello_kernel();
  return 0;
}

我不知道这个示例代码是否可行。

如何编写由用户空间函数调用的内核空间函数?

【问题讨论】:

  • 你必须编写一个内核模块来做到这一点。见lwn.net/Kernel/LDD3
  • 这称为“系统调用”。搜索“linux system call”应该会给你不少提示。

标签: c linux kernel-mode


【解决方案1】:

用户态代码与内核代码交互的机制是系统调用,你可以阅读here

这意味着不能直接调用函数(这是用户态内存保护的重点),而是需要将其添加到内核并重新编译。

此信息可在 Internet 上找到(只需搜索)并且之前已询问过,例如 here

【讨论】:

    猜你喜欢
    • 2017-12-10
    • 2011-07-11
    • 2016-03-13
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    相关资源
    最近更新 更多