我正在阅读Embedded Linux Primer一书和Linux Kernel Module Programming Guide,我对用户空间应用程序与内核模块的通信感到困惑
用户空间App --> Device node/proc file --> kernel module (位于/lib/modules/)
1)当我们与设备节点方法( /dev/ -使用open、read、write、close调用)和/proc/file方法通信时,有什么确切的区别?
发布于 2015-10-22 22:50:17
应该为进程信息保留procfs (/proc),模块不应该在其中放置任何文件。在某种程度上,procfs是唯一可用的伪文件系统,这就是为什么你可以找到声音系统或实时时钟信息。然后,创建了sysfs来正确地包含这些信息。
使用设备文件(通常驻留在/dev中)和来自procfs的文件之间的主要区别在于它在内核中的处理方式。
用于设备文件的操作是使用file_operations结构注册的,对于字符设备,通常使用cdev_init和cdev_add。你的模块可能不会经常这样做,子系统是注册你的设备的那个。
而在procfs中对文件的操作是使用proc_create注册的
https://stackoverflow.com/questions/33271053
复制相似问题