首页 理论教育 Linux驱动程序开发实例:设备模型层次

Linux驱动程序开发实例:设备模型层次

时间:2023-10-19 理论教育 版权反馈
【摘要】:Linux内核的设备模型包括设备、设备驱动、总线、设备类等几个核心组件。device代表一个设备,设备结构中包含了设备的DMA设置以及与体系相关的硬件特性,具体定义如下:device的注册与注销函数如下:int device_register;void device_unregister;int device_add;void device_del;device_driver即设备的驱动,它对应的数据结构定义如下:device_driver的注册与注销函数原型如下:int driver_register;void driver_unregister;probe成员函数在Linux驱动开发中是一个很重要的接口。设备与设备驱动均挂载到总线上,总线完成设备、设备驱动的匹配、探测等管理工作。

Linux驱动程序开发实例:设备模型层次

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目录下面找到。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈