linux - 如何在用户空间调用自定义的Kernel函数?

标签 linux linux-kernel system-calls kernel-module

我写了一个新的内核模块,它使用 EXPORT_SYMBOL() 导出了一个函数符号。但是我怎样才能像其他 Linux 系统调用一样在用户空间调用该函数呢?

最佳答案

系统调用不同于使用 EXPORT_SYMBOL() 的模块导出的函数。您的模块导出的这些符号用于内核的其他部分。您可以向用户空间公开接口(interface)(阅读 abot proc 和 linux 上的 sys 文件系统),这可以反过来调用您的模块函数(不一定导出)。

如果你想写一个系统调用,通过这些链接

How is the system call in Linux implemented?

http://tldp.org/HOWTO/Implement-Sys-Call-Linux-2.6-i386/

Internet 上有许多资源可以帮助您实现系统调用。

关于linux - 如何在用户空间调用自定义的Kernel函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18822299/

相关文章:

linux - 有没有办法像 edev 一样在 libusb 中获取 sysname?

Linux 内核设备驱动程序从设备到用户空间内存的 DMA

multithreading - 用户线程 vs.内核线程

fortran - 在 Fortran 的 SYSTEM 子例程中使用变量

perl - 我可以从 Perl 捕获 shell 调用吗?

c - 使用 gdb 进入 swapcontext()

c - linux & c - 访问磁盘上的文件..按地址?

c - 在 linux 中添加系统调用时出现 'ímplicit declaration of function' 错误

linux - 我正在创建一个内核模块来查找所有进程的驻留页面

ruby - 在 Linux Mint 17.1 中运行 jekyll 时出错