遵守UDEV设备模型,
首先注册总线,然后是总线设备,之后是具体设备注册,注册完之后就可以在sys/bus相应的目录下面找到挂载这个总线上的设备,最后是注册驱动,驱动会查询总线上的设备进行绑定。
比如:自定义一个设备是my_vir_device,使用总线是vir_bus。
1.注册总线类型
struct bus_type vir_bus_type = {
.name = "my_vir",
.match = my_vir_match,
}
bus_register(&vir_bus_type);
2.注册总线设备
struct device my_vir_bus = {
.bus_id = "my_vir",
}
device_register(&my_vir_bus);
3.注册设备驱动
struct device my_vir_device;
my_vir_device.bus = &vir_bus_type;
my_vir_device.parent = &my_vir_bus;
my_vir_device.bus_id = "my_vir";
device_register(&my_vir_device);
3.驱动注册
struct device_driver my_vir_driver;
my_vir_driver.bus = &vir_bus_type;
my_vir_driver.probe = vir_probe;
driver_register(&my_vir_driver);