对Linux设备驱动模型的一些理解
作者:张俊岭
EMAIL: sprite_zjl@sina.com; jlzhang@tangrae.com.cn
QQ: 251450387
日期:2009-9-15
说明:对于Linux设备驱动工程师来说,掌握设备驱动模型非常重要。本文档基于2.6.30 内核,记录了一些我对Linux设备驱动模型的一些总结和理解,可能有错误和不当之处,欢迎交流和指正。
1 底层机制
Linux的设备驱动模型的底层机制主要包括:kobject,kobj_type,kset等几个结构。这几个结构的定义在include/linux/kobject.h中。
1.1 kobject
kobject代表设备驱动模型中一个基本对象,类似于MFC中最顶层的基类CObject。每个kobject都对应于sysfs中的一个目录。上层结构例如device,device_driver,bus_type都嵌入了一个kobject,这相当于面向对象程序设计语言中的继承机制。kobject的定义如下: struct kobject {
const char *name; /* 名称 */
struct list_head entry; /* 用于链入所属kset的链表 */
struct kobject *parent; /* 父kobject */
struct kset *kset; /* 所属kset */
struct kobj_type *ktype; /* 所属ktype */
struct sysfs_dirent *sd; /* sysfs中的目录项 */
struct kref kref; /* 生命周期(引用计数)管理 */
unsigned int state_initialized:1; /* 标记:初始化 */
unsigned int state_in_sysfs:1; /* 标记:在sysfs中 */
unsigned int state_add_uevent_sent:1; /* 标记:已发出KOBJ_ADD uevent */
unsigned int state_remove_uevent_sent:1; /* 标记:已发出KOBJ_REMOVE uevent */ unsigned int uevent_suppress:1; /* 标记:禁止发出uevent */
};
kobject的基本操作:
/* 设置名称 */
int kobject_set_name(struct kobject *kobj, const char *name, ...) /* 初始化 */
void kobject_init(struct kobject *kobj, struct kobj_type *ktype);
/* 添加 */
int kobject_add(struct kobject *kobj,struct kobject *parent, const char *fmt, ...);
对Linux 设备驱动模型的一些理解_IT/计算机_专业资料。对 Linux 设备驱动模型的一些理解对Linux 设备驱动模型的一些理解 对 Linux 设备驱动模型的一些理解作者:张...
归根结底,没仔细阅读过Linux设备驱动模型的核心代码,我想只要理解了这部分内容,上层的一些总线驱动比如i2c、spi、platform等等都将会变得简单。于是,狠下心来好好研究...
Linux 设备驱动模型摘抄(1) Linux 统一设备模型 简介 Linux2.6 内核提供了新的设备模型, 目的是为了对计算机上的所有设备进行统一地表示 和操作, 包括设备本身和...
linux杂项设备驱动模型_计算机软件及应用_IT/计算机_专业资料。linux下,杂项设备驱动小结Linux 驱动中把无法归类的五花八门的设备定义为混杂设备(用 miscdevice 结构...
第2章Linux设备驱动模型_计算机软件及应用_IT/计算机_专业资料。Linux驱动编程 Linux驱动编程之驱动模型 Linux的驱动模型 ? 驱动作用– 在硬件接口与应用软件之间...
LINUX设备驱动之设备模型_计算机软件及应用_IT/计算机_专业资料。linux,linux嵌入式,2410-S实验指导书,Inode的关系,设备模型设备驱动之设备模型一---kobject LINUX...
这就是最初建立 Linux 设备模型的目的。 当然,Linux 设备模型给我们带来的便利远不止如此。既然已经建立了一个组织所有设备和驱动的树状结构,用户就可以通过 这棵...
linux设备模型理解_计算机软件及应用_IT/计算机_专业资料。LINUX 设备模型理解 ... 设备属性 struct driver attribute * drv_attrs; 驱动程序属性 int (*match)...
Linux 设备驱动的 class(类)的理解(以 timed_output 为基础) 一、 前言 前天写了关于安卓震动系统的驱动开发全过程, 其中用到了 timed_output 这个驱动模型, ...
Linux设备驱动编程模型之上层容器篇_计算机软件及应用_IT/计算机_专业资料。...对设备驱动模型中核心的数据结构做了总结, 对他们的操作就不难理解 了,可以猜...
热门文档