何时使用/ proc和/ dev

bin*_*inW 5 linux-device-driver linux-kernel

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

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

sar*_*old 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,但我一直以为它看起来很整洁.也许它适合你的模块?)