linux - 关于 Linux 内核模块的快速问题

标签 linux kernel c

我对 Linux 非常熟悉(我已经使用它 2 年,没有使用 Windows 1 1/2 年),我终于深入研究了内核编程,并且我正在做一个项目。所以我的问题是:

  1. 内核模块是否会比传统的 c 程序运行得更快。
  2. 如何与模块通信(甚至可能),例如调用其中的函数。

最佳答案

1.Will a kernel module run faster than a traditional c program.

视情况而定
作为内核模块运行意味着你可以按照不同的规则进行游戏,你可能会根据你正在做的事情来避免一些上下文切换。您可以访问一些可用于优化代码的强大工具,但不要指望将所有内容都放入内核空间就能神奇地加快代码的运行速度。

2.How can I communicate with a module (is that even possible), for example call a function in it.

有多种方式:

  • 您可以使用各种文件系统接口(interface):procfs , sysfs , debugfs , sysctl , ...
  • 您可以注册 a char device
  • 您可以使用 the Netlink interface
  • 您可以创建新的系统调用,尽管强烈建议不要这样做
  • 而且你总是可以想出你自己的方案,或者使用一些不太常见的 API

关于linux - 关于 Linux 内核模块的快速问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29684989/

相关文章:

c - 我无法使用 SHFileOperation 删除文件

c - warning_cast.c : In function ? fn_print? : warning_cast. c:5:警告:从不同大小的整数转换为指针

linux - KSH 循环遍历 num_machines 在下面的脚本中

c - 出于性能原因将代码推送到内核或用户空间?

c - Linux内核的ip_output.c中的简单内存malloc和free

c - 指针没有取新值

linux - 在 spawing ssh 之后或之前指定 match_max 有什么区别?

linux - 如何在 linux 中的下一个命令中引用一个命令的结果?

c - 为什么 inode 编号从 1 而不是 0 开始?

assembly - 操作系统中的加载程序如何工作?