具有多个设备属性的Linux驱动程序链接到同一功能

罗伦茨里

我正在编写具有多个设备属性的简单Linux驱动程序。现在,无论读取或写入哪个属性,最终都将在设备内存的某个位置读取或写入。只有定义精确位置的偏移量才能从一个属性更改为另一个属性。使用几行代码可以更轻松地解释这一点:

/* General read function evoked by attributes */
static const ssize_t foo_show(struct device *dev,
    struct device_attribute *attr, char *buf)
{
    u32 offset;

    if (attr->attr.name == "control")
        offset = OFFSET_CTRL;
    else if (attr->attr.name == "status")
        offset = OFFSET_STATUS;

    u32 data = ioread32(dev_mem + offset);
    ...
}

...

/* declaring attributes, all linking to the same function */
static DEVICE_ATTR(control, S_IWUGO | S_IRUGO, foo_show, foo_set);
static DEVICE_ATTR(status, S_IRUGO, foo_show, NULL);

现在,您可能会猜想使用attr->attr.name == foo不是真正的好方法,特别是因为我收到警告“与字符串文字比较导致未指定的行为”,告诉我使用strcmp您是否知道任何更好的方法来确定哪个属性负责调用?

我们

在现有驱动程序中似乎完成此操作的方法是直接与global属性进行比较。

static DEVICE_ATTR(control, S_IWUGO | S_IRUGO, foo_show, foo_set);
static DEVICE_ATTR(status, S_IRUGO, foo_show, NULL);

static const ssize_t foo_show(struct device *dev,
    struct device_attribute *attr, char *buf)
{
    u32 offset;

    if (attr == &dev_attr_control)
        offset = OFFSET_CTRL;
    else if (attr == &dev_attr_status)
        offset = OFFSET_STATUS;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有多个设备属性的Linux驱动程序链接到同一功能

来自分类Dev

Linux是否具有USB端口的设备驱动程序?

来自分类Dev

具有多个链接到同一模型的数据建模

来自分类Dev

急流/码头工人:无法选择具有以下功能的设备驱动程序“”:[[gpu]]

来自分类Dev

无法选择具有以下功能的设备驱动程序“”:[[gpu]]

来自分类Dev

为什么某些设备驱动程序具有多个版本?

来自分类Dev

Linux内核驱动程序模块:使用单个驱动程序处理多个设备文件

来自分类Dev

具有回调功能的驱动程序

来自分类Dev

具有Mapbox Optimization API的多个驱动程序?

来自分类Dev

Linux设备驱动程序基础

来自分类Dev

Linux字符设备驱动程序问题

来自分类Dev

安装Ubuntu后,我如何知道所有设备都具有必需的驱动程序

来自分类Dev

安装Ubuntu后,我如何知道所有设备都具有必需的驱动程序

来自分类Dev

阻止Radeon驱动程序连接到特定的PCI设备?

来自分类Dev

具有PHP驱动程序的MongoDB-如何通过一个更新查询将多个数组推入?

来自分类Dev

sysfs属性可以在Linux设备驱动程序中采用非数字值吗?

来自分类Dev

Linux:如何查找用于设备的设备驱动程序?

来自分类Dev

平台设备和平台驱动程序链接

来自分类Dev

使用具有kerberos身份验证的simba odbc驱动程序连接到mongodb

来自分类Dev

物理设备驱动程序和逻辑设备驱动程序有什么区别?

来自分类Dev

没有实际设备的设备节点和驱动程序

来自分类Dev

ODBC Excel驱动程序SQL将多个外部ID映射到同一表

来自分类Dev

linux设备驱动程序文件操作:是否可能有竞争条件?

来自分类Dev

带有 Windows 驱动程序的串行 USB 设备。想在linux下使用

来自分类Dev

连接到多个驱动程序或错误同步描述的问题

来自分类Dev

mongoDB:聚合-本机node.js驱动程序是否具有与$ lookup连接等效的功能?

来自分类Dev

Windows内核模式驱动程序是否具有与RegQueryInfoKey等效的功能?

来自分类Dev

如何编写简单的Linux设备驱动程序?

来自分类Dev

Linux设备驱动程序未使用udev自动加载

Related 相关文章

  1. 1

    具有多个设备属性的Linux驱动程序链接到同一功能

  2. 2

    Linux是否具有USB端口的设备驱动程序?

  3. 3

    具有多个链接到同一模型的数据建模

  4. 4

    急流/码头工人:无法选择具有以下功能的设备驱动程序“”:[[gpu]]

  5. 5

    无法选择具有以下功能的设备驱动程序“”:[[gpu]]

  6. 6

    为什么某些设备驱动程序具有多个版本?

  7. 7

    Linux内核驱动程序模块:使用单个驱动程序处理多个设备文件

  8. 8

    具有回调功能的驱动程序

  9. 9

    具有Mapbox Optimization API的多个驱动程序?

  10. 10

    Linux设备驱动程序基础

  11. 11

    Linux字符设备驱动程序问题

  12. 12

    安装Ubuntu后,我如何知道所有设备都具有必需的驱动程序

  13. 13

    安装Ubuntu后,我如何知道所有设备都具有必需的驱动程序

  14. 14

    阻止Radeon驱动程序连接到特定的PCI设备?

  15. 15

    具有PHP驱动程序的MongoDB-如何通过一个更新查询将多个数组推入?

  16. 16

    sysfs属性可以在Linux设备驱动程序中采用非数字值吗?

  17. 17

    Linux:如何查找用于设备的设备驱动程序?

  18. 18

    平台设备和平台驱动程序链接

  19. 19

    使用具有kerberos身份验证的simba odbc驱动程序连接到mongodb

  20. 20

    物理设备驱动程序和逻辑设备驱动程序有什么区别?

  21. 21

    没有实际设备的设备节点和驱动程序

  22. 22

    ODBC Excel驱动程序SQL将多个外部ID映射到同一表

  23. 23

    linux设备驱动程序文件操作:是否可能有竞争条件?

  24. 24

    带有 Windows 驱动程序的串行 USB 设备。想在linux下使用

  25. 25

    连接到多个驱动程序或错误同步描述的问题

  26. 26

    mongoDB:聚合-本机node.js驱动程序是否具有与$ lookup连接等效的功能?

  27. 27

    Windows内核模式驱动程序是否具有与RegQueryInfoKey等效的功能?

  28. 28

    如何编写简单的Linux设备驱动程序?

  29. 29

    Linux设备驱动程序未使用udev自动加载

热门标签

归档