易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux设备模型

看LDD3中设备模型一章,觉得思维有些混乱。这里从整体的角度来理理思路。
本文从四个方面来总结一些内容:
1.底层数据结构:kobject,kset.
2.linux设备模型层次关系:bus_type,device,device_driver.
3.集成:PCI设备驱动模型实例及设备,设备驱动注册源码的简单分析.
4.面向对象的思想在linux设备模型中的应用分析.
 
一、底层数据结构:kobject,kset
先说说模型的意义:
总体来说是为了系统地管理所有设备。
 
kobject 
结合面向对象的思维。这个kobject属于最基础的结构,也就是最高抽象层(有点像java中的Cobject类)。任何一个设备模型如总线,设备,驱动都属于一个kobject 。在实现上这种派生关系就是在结构体中包含一个kobject的变量。
这个在层次上处理最顶层的kobject结构提供了所有模型需要的最基本的功能:
1 引用计数  用于内核维护其存在与消亡
2 sysfs表示  每个sys/下的对象对应着一个kobject。
3 热拔插事件处理。 处理设备的热拔插事件。
Kobjects 在内核中对应有一套申请,初始化,添加,注册,计数操作,释放等函数
struct kobject {
 const char  * k_name; 名
 char   name[KOBJ_NAME_LEN];
 struct kref  kref; 计数
 struct list_head entry; 用于连接到同类kobjects的链表
 struct kobject  * parent;  用于实现层次,指向其父对象。
 struct kset  * kset; 用于实现层次,所属的集合
 struct kobj_type * ktype;  指向对象的类型。
 struct dentry  * dentry;  指示在sysfs 中的目录项
 wait_queue_head_t poll;
}; (linux 2.6.18)
Kset 和kobj_type struct kset {
 struct subsystem * subsys;  在最新内核中已经没有subsys概念了。统一用ksets
 struct kobj_type * ktype;   类型。
 struct list_head list;    同一kset的链表
 spinlock_t  list_lock;
 struct kobject  kobj; 自身


相关文档:

拨开迷雾 单片机和嵌入式LINUX开发的那点事儿(下)


2.1.2 是否通用
有些单片机厂家也给客户提供了大量的驱动程序,比如USB
HOST驱动程序,这可以让客户很容易就可以在它的上面编写程序读写U盘。但是客户写的这些程序,只能在这种芯片、这个驱动程序上使用;更换另一种芯片
后,即使芯片公司也提供了驱动程序,但是接口绝对不一样,客户又得重新编写应用程序。
基于操作 ......

64位Linux上安装Memcached详细步骤

由于32位操作系统下面单进程最大内存使用不能超过2G,而我们用Memcached经常需要使用更大的内存空间,所以选择64位的Linux版本是必须的,64位OS下的Memcached安装和32位OS下差不多,只有一个地方稍有不同,详见下面的红色字体部分。
我们以版本memcached-1.2.6为例,对于其他版本替换相应版本号即可;
下载地址:http://w ......

linux ps 命令 STAT域

STAT(该行程的状态)
D: 不可用信号中断的睡眠状态
R: 正在执行或处于执行队列中
S: 可以用信号中断的睡眠状态
T: 暂停执行 
Z: 僵死状态
------------------------------------
W: 没有足够的记忆体分页可分配 
<: 高优先序的行程 
N: 低优先序的行程&nbs ......

linux ps 命令 STAT域

STAT(该行程的状态)
D: 不可用信号中断的睡眠状态
R: 正在执行或处于执行队列中
S: 可以用信号中断的睡眠状态
T: 暂停执行 
Z: 僵死状态
------------------------------------
W: 没有足够的记忆体分页可分配 
<: 高优先序的行程 
N: 低优先序的行程&nbs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号