首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux:如何从用户空间与内核模块进行通信

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

Stack Overflow用户
提问于 2015-10-22 07:36:09
回答 1查看 751关注 0票数 1

我正在阅读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方法通信时,有什么确切的区别?

EN

回答 1

Stack Overflow用户

发布于 2015-10-22 22:50:17

应该为进程信息保留procfs (/proc),模块不应该在其中放置任何文件。在某种程度上,procfs是唯一可用的伪文件系统,这就是为什么你可以找到声音系统或实时时钟信息。然后,创建了sysfs来正确地包含这些信息。

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

用于设备文件的操作是使用file_operations结构注册的,对于字符设备,通常使用cdev_init和cdev_add。你的模块可能不会经常这样做,子系统是注册你的设备的那个。

而在procfs中对文件的操作是使用proc_create注册的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33271053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档