执行linux char驱动程序,具有多个参数访问权限

时间:2014-09-03 08:27:48

标签: c linux linux-kernel linux-device-driver ioctl

我正在编写一个访问PCI卡的简单char驱动程序。它在新类的帮助下注册到sysfs,可在/dev/foodev下访问。使用标准文件操作,我可以对设备执行简单的读写操作。

我的问题:我有多个参数存储在卡上的不同地址(版本,状态,控制......),我想独立访问。因此,当前只有一个读取和一个写入功能,因此我必须每次在驱动程序代码中更改地址。 显然,有一种更方便的方法来实现它。我偶然发现了以下两种方法,并且想知道哪种方式在可持续性和用户可访问性方面更好:

  • 使用ioctl命令设置之前的地址/参数 访问。
  • 使用多个属性在udev中很好地设置了设备 (device_create_file())用户不仅可以写/读 不同的"文件":

    /dev/foodev ../version ../status ../control

2 个答案:

答案 0 :(得分:0)

我认为你应该看看PCI框架来实现你的驱动程序。

答案 1 :(得分:0)

不要(误)使用ioctls;你有竞争条件。将属性用作文件。该方案已在sysfs中使用。例如。查看GPIO LED和按键。 - 锯末