现在位置: 首页

Linux驱动之bus_register分析

2016年01月13日 驱动开发  ⁄ 共 6169字 Linux驱动之bus_register分析已关闭评论 ⁄ 阅读 2,676 次
最近在温故Linux的总线设备驱动模型,下面分析一下bus_register的详细调用过程及行为目的: kobject,kset,ktype。这三个结构联合起来一起构成了整个设备模型的基石,请看下面两篇文章: 《设备模型之kobject,kset及其关系》 《设备模型之总线,驱动,设备》 devices_ket和driver_kset 上图说明了总线通过两个数据结构:devices_ket和driver_kset来管理注册在此总线上的所有的设备和驱动,为了方便遍历,linux增加了klist_devi...
阅读全文

设备模型之总线,驱动,设备

2016年01月11日 驱动开发  ⁄ 共 1753字 设备模型之总线,驱动,设备已关闭评论 ⁄ 阅读 2,631 次
Kobject,kset是设备模型的基本结构体,设备模型使用这两个结构体来完成设备的层次关系,但在实际的设备驱动编写中,我们基本上用不到kobject,kset这些结构体,是因为这些结构体又被嵌入到更大的结构体中,原因在于kobject,kset结构体只能表征设备的层次关系,但是一个设备的驱动,并不是简单的一个层次关系而已,因此,必需要把kobject,kset结构体嵌入到更大的结构体中,使用kobject,kset来表征层次关系,用其他的成员表示设...
阅读全文

设备模型之kobject,kset及其关系

2016年01月08日 驱动开发  ⁄ 共 1638字 设备模型之kobject,kset及其关系已关闭评论 ⁄ 阅读 2,730 次
Linux2.6以后的设备驱动,都是在设备模型的基础上构建的,因此,要编写linux下的设备驱动程序,不论是usb设备,pci设备等,都需要了解设备模型。 设备模型的基础结构体主要是kobject,kset这两个结构体: struct kobject { char * k_name; char name[KOBJ_NAME_LEN]; struct kref kref; struct list_head entry; struct kobject * parent; struct kset * kset; struct kobj_type * ktype; struct d...
阅读全文

malloc的内存分配之 malloc(0)的内存分配情况

2015年12月28日 技术文章  ⁄ 共 611字 malloc的内存分配之 malloc(0)的内存分配情况已关闭评论 ⁄ 阅读 1,514 次
#include<iostream> using namespace std; int main() { char *p; if((p=(char *)malloc(0))==NULL) puts("got a null pointer"); else puts("got a valid pointer"); } 答案:got a valid pointer 首先: 在标准的malloc实现中,并不检查输入值的大小,而是将输入值做对齐操作后直接从堆上分配空间。 其次: 不论输入值的大小为多少,在malloc的内部最小的内...
阅读全文

Tiny4412 Linux驱动之按键(输入子系统)

2015年12月17日 驱动开发  ⁄ 共 1011字 Tiny4412 Linux驱动之按键(输入子系统)已关闭评论 ⁄ 阅读 2,543 次
前面的驱动程序无法应用到别人写的现成的应用程序上(比如QT),因为别人的应用程序肯定不会打开我们创建的设备文件(/dev/buttons),别人打开的也许是其他现成的设备,比如/dev/tty。设置别人什么都不打开,直接scanf就能获得按键的输入。 以前写的驱动程序只能我们自己用,或自己公司内部用(因为别人不知道怎么用)。 如果想通用,就需要把自己写的驱动程序融入到内核现有的驱动程序中,这个现成的驱动程序就是输入子系统。...
阅读全文
×