Linux内核的设备模型包括设备(device)、设备驱动(device_driver)、总线(bus)、设备类(class)等几个核心组件。
device代表一个设备,设备结构(struct device)中包含了设备的DMA设置以及与体系相关的硬件特性,具体定义如下:
device的注册与注销函数如下:
int device_register(struct device*dev);
void device_unregister(struct device*dev);
int device_add(struct device*dev);
void device_del(struct device*dev);
device_driver即设备的驱动,它对应的数据结构定义如下:
device_driver的注册与注销函数原型如下:(www.xing528.com)
int driver_register(struct device_driver*drv);
void driver_unregister(struct device_driver*drv);
probe成员函数在Linux驱动开发中是一个很重要的接口。分析driver_register函数的调用关系,可发现driver_register->bus_add_driver->driver_attach->__driver_attach->driver_probe_device->really_probe:
假如设备的总线没有实现probe成员函数,则driver_register函数会调用device_driver的probe成员函数。
设备与设备驱动均挂载到总线上,总线完成设备、设备驱动的匹配、探测等管理工作。
类是对设备的更高级的抽象,它更关注设备的共性:
使用class_create可以创建一个类。系统注册的类可以在/sysfs/class目录下面找到。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。