C 如何从用户程序调用在内核模块中编写的函数?
已成功创建并加载示例驱动程序,因为编写了用户定义的函数,它执行了一些操作。我需要编写一个用户程序来调用驱动程序模块中的用户定义函数 在以下情况下需要帮助C 如何从用户程序调用在内核模块中编写的函数?,c,module,operating-system,linux-kernel,kernel,C,Module,Operating System,Linux Kernel,Kernel,已成功创建并加载示例驱动程序,因为编写了用户定义的函数,它执行了一些操作。我需要编写一个用户程序来调用驱动程序模块中的用户定义函数 在以下情况下需要帮助 如何从用户程序访问驱动程序代码 如何从用户程序调用在内核模块中编写的函数 谢谢。您可以让您的驱动程序在写入/dev/xxx文件或/proc/xxx文件时做出反应(或在必要时进行ioctl)。此外,您可以创建一个新的系统调用,但这更像是一个玩具,因为该模块只能在定制的内核上工作 编辑:尝试(在字符设备驱动程序上)。这取决于您的功能,但通常: 如
谢谢。您可以让您的驱动程序在写入/dev/xxx文件或/proc/xxx文件时做出反应(或在必要时进行ioctl)。此外,您可以创建一个新的系统调用,但这更像是一个玩具,因为该模块只能在定制的内核上工作
编辑:尝试(在字符设备驱动程序上)。这取决于您的功能,但通常:
- 如果您希望以值的形式存储和显示属性(例如背光的当前亮度),标准方法是使用sysfs:
- 如果要从设备(真实或虚拟)写入/读取值,将设备的内存或IO区域导出到用户空间,或更一般地控制设备(例如,设置相机分辨率和捕获帧),则应使用具有读/写/mmap和ioctl功能的字符或块设备:
- 最后,如果您的函数只是从内核控制一些东西,那么sysfs或procfs应该是最佳选择。我不知道为什么现在人们仍然使用procfs,也许除了其他设备