代码之家  ›  专栏  ›  技术社区  ›  binW

何时使用/proc和何时使用/dev

  •  5
  • binW  · 技术社区  · 15 年前

    我需要写一个内核模块,不是一个设备驱动程序。该模块将与一些用户空间进程通信。由于我不想使用ioctl(),我只能在/proc目录中创建一个文件,或者在/dev目录中创建一个设备文件。

    1 回复  |  直到 15 年前
        1
  •  6
  •   sarnold    15 年前

    将新接口添加到/proc/中会有很大的困难。内核开发人员不高兴的是,它已经成为各种接口的垃圾场,除非您通过/proc/pid/实际修改有关进程的内容,否则我认为您很难说服内核社区接受它。

    可以接受/dev/中的设备文件,即使对于不是真正的设备驱动程序的模块也是如此(e、 例如,/dev/kvm、/dev/pts、/dev/ecryptfs、/dev/fuse、/dev/kmsg、/dev/ptmx等等)但是,设备文件通常更容易用ioctl()操作,如果可以的话,我认为应该避免使用它。

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