简体   繁体   中英

Implementation of linux char driver with multiple parameters to access

I am writing a simple char driver which accesses a PCI card. It is registered to sysfs with the help of a new class and accessible under /dev/foodev . Using standard file operations I can perform simple read and write operations to the device.

My problem: I have multiple parameters stored at different addresses on the card (version, status, control, ...) which I would like access independently. Currently having only one read and one write function I therefore have to change the address every time again in the driver code. Obviously there is a more convenient way to implement this. I stumbled about the two following approaches and was wondering which is the better one in terms of sustainability and user accessibility:

  • Using ioctl commands setting the address/parameter before an access.
  • Having the device already nicely set up in udev using multiple attributes ( device_create_file() ) of which the user than just can write/read from different "files":

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

我认为您应该看一下PCI框架来实现驱动程序。

Don't (mis)use ioctls; you'll have race conditions. Use the attributes as files. That scheme is already used in sysfs. EG look at GPIO LEDs and keys. – sawdust

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM