Linux:如何从用户空间与内核模块进行通信

时间:2015-10-21 23:36:09

标签: linux linux-kernel

我正在阅读嵌入式Linux入门手册和Linux内核模块编程指南,我对与内核模块的用户空间应用程序通信感到困惑

用户空间应用 - >设备节点/ proc文件 - >内核模块(位于/ lib / modules /中)

1)当我们与设备节点方法(/ dev / - 使用open,read,write,close调用)和/ proc / file方法进行通信时,有什么区别?

1 个答案:

答案 0 :(得分:0)

procfs/proc)应保留用于过程信息,模块不应将任何文件放在那里。在某些时候,procfs是唯一可用的伪文件系统,这就是您可以找到声音系统或RTC信息的原因。然后,创建sysfs以正确包含这些信息。

使用设备文件(通常驻留在/ dev)和procfs文件之间的主要区别在于它在内核中的处理方式。

设备文件使用的操作使用file_operations结构进行注册,通常使用cdev_initcdev_add作为字符设备。您的模块可能不经常这样做,子系统是注册您设备的子系统。

使用proc_create

注册procfs中的文件操作