何时使用/ proc和/ dev

时间:2010-07-14 10:24:49

标签: linux-kernel linux-device-driver

我需要编写一个不是设备驱动程序的内核模块。该模块将与一些用户空间进程通信。因为我不想使用ioctl(),所以我要么在/ proc目录中创建一个文件,要么在/ dev目录中创建一个设备文件。

问题:我如何在/ proc和/ dev之间做出决定。这只是一个判断电话,还是有关于使用这两个的不成文的协议。

1 个答案:

答案 0 :(得分:6)

将新界面添加到/ proc /中会有很大困难。内核开发人员不满意它已成为各种接口的倾销场所,除非你实际上通过/ proc / pid /修改了关于进程的东西,否则我认为你难以说服内核社区接受它。

/ dev /中的设备文件可以接受,即使对于非真正设备驱动程序的模块也是如此。 (例如,/ dev / kvm,/ dev / pts,/ dev / ecryptfs,/ dev / fuse,/ dev / kmsg,/ dev / ptmx等)但是,使用ioctl操作设备文件往往更容易( ),如果可以,我认为你是正确的。

内核圈的当前趋势是sysfs或自定义文件系统。 sysfs方法基于单值每文件语义,旨在使用echo和cat进行操作。如果它适合您,对用户来说非常棒。自定义文件系统允许您编写非常具体的二进制功能接口,而fs / libfs.c应该可以帮助您根据自己的需要编写自己的文件系统。 (我不知道有谁使用过configfs,但我一直以为它看起来很整洁。也许它适合你的模块?)