bus_register代码流程
时间: 2024-02-22 13:55:38 浏览: 18
下面是 "bus_register" 函数的代码流程:
```c
int bus_register(struct bus_type *bus)
{
int retval;
if (!bus || !bus->name)
return -EINVAL;
/* Add the bus to the list */
retval = bus_add(bus);
if (retval)
return retval;
/* Register any drivers that have already been added */
driver_register(bus, bus->p);
return 0;
}
```
首先,函数会检查传入的参数是否有效。如果 "bus" 指针或者 "bus->name" 为空,则会返回 -EINVAL。
接着,函数会调用 "bus_add" 函数将设备总线添加到内核的设备总线列表中。如果添加失败,则会返回错误代码。
然后,函数会调用 "driver_register" 函数将设备驱动程序注册到总线上。该函数会将驱动程序添加到总线的驱动程序列表中,并在总线上查找与驱动程序名称匹配的设备。如果找到了匹配的设备,则会调用驱动程序的 "probe" 函数进行设备初始化,否则驱动程序将不会被加载。
最后,函数会返回 0 表示注册成功,或者返回其他错误代码表示注册失败。
总之,"bus_register" 函数的代码流程比较简单,主要是调用了 "bus_add" 和 "driver_register" 函数来实现设备总线和设备驱动程序的注册。