device_create函数如何设置bus
时间: 2023-07-16 14:12:16 浏览: 44
在 Linux 内核中,`device_create()` 函数用于在 sysfs 中创建一个设备节点,并将该设备节点与对应的设备对象关联起来。而 `bus` 参数指定了该设备所属的总线类型,因此需要在调用 `device_create()` 函数之前将该设备对象与对应的总线对象关联起来。
要实现这一点,可以通过调用 `device_add()` 函数将设备对象添加到总线对象的设备链表中。例如,如果设备对象为 `dev`,总线对象为 `bus`,则可以使用以下代码将它们关联起来:
```
device_initialize(dev);
dev->bus = bus;
device_add(dev);
```
在这里,`device_initialize()` 函数用于初始化设备对象,其中包括将设备对象添加到总线对象的设备链表中。`dev->bus = bus` 语句将设备对象的 `bus` 成员设置为总线对象。最后,`device_add()` 函数将设备对象添加到总线对象的设备链表中。
设置好 `bus` 后,就可以调用 `device_create()` 函数来创建设备节点了。例如,如果设备对象为 `dev`,设备类别为 `myclass`,则可以使用以下代码在 sysfs 中创建设备节点:
```
device_create(myclass, NULL, dev, NULL, "mydevice");
```
在这里,第一个参数为设备类别,第二个参数为父设备节点(如果设备对象是总线设备,则为 `NULL`),第三个参数为设备对象,第四个参数为设备节点的属性文件操作结构体(如果没有属性文件,则为 `NULL`),最后一个参数为设备节点的名称。