注册char设备-最佳做法

问题描述 投票:2回答:0

我知道关于注册char设备有很多问题。 即使如此,因为有太多的API,我还是想寻求一些帮助以将其放置在适当的位置。

我认为,为了创建设备,应在模块的init函数内部执行以下步骤。

  1. 注册设备并使用register_chrdev (主要,名称,fops)方法获取主要编号。 major:将0作为主要数字传递,因此操作系统将为我们选择一个主要。
    fops:将此留空,因为我们将使用sysfs。
  2. 使用class_create方法创建sysfs类。
  3. 使用device_create方法创建sysfs设备。
  4. 使用device_create_file方法创建sysfs文件属性。

我看了看网上,并且阅读了Linux Device Drivers第三版的各个部分 ,现在有点困惑了。

  1. 有什么理由要使用mknod吗? 还是应该只使用create_device?
  2. alloc_chrdev_region呢? Linux设备驱动程序第三版中,它说这是新的API,它代替了register_chrdev 但是,如果是这样,它将如何与所有sysfs方法(device_create等)结合?
  3. / dev / *内部的设备有什么用,还是只能通过sysfs访问这些设备?
  4. sysfs类的优点是什么?

谢谢。

linux linux-kernel device-driver
© www.soinside.com 2019 - 2024. All rights reserved.