
Linux Device Model
dndxhej
这个作者很懒,什么都没留下…
展开
-
kset_example 初探
LDM以kobject和kset为根本,初步了解了kobject后,继续趁热打铁,对kset做下了解,并对kobject和kest的关系做下了解。内核空间与用户空间的映射关系如下表所示:内核空间(internel)用户空间(externel)内核对象(kernel objects)目录(directories)对象属性(object attributes)普通文件(regular files)对象关系(object relationshiops)符号链接(symbolic links)struct kobj原创 2010-12-25 22:00:00 · 2268 阅读 · 0 评论 -
linux文件系统的系统分析--(十六)sysfs和设备模型--从platform和rtc来感受设备模型
分析文件系统后,再分析设备模型,从而自然的理解了sysfs和设备模型的关系.既然linux2.6引入了设备模型和sysfs,那肯定是比之前更为先进的.下面要分析下内核中如何利用设备模型去管理设备的,在内核的driver目录下有好多子目录,比如iic spi pci input usb这些子系统的框架,这些框架都是在设备模型的模型之上再去抽象的.我们仅以platform这种虚拟的总线类型和rtc这种原创 2012-04-15 22:16:05 · 2363 阅读 · 0 评论 -
linux文件系统的系统分析--(十五)sysfs和设备模型--Class
看完了bus device和driver,终于到了设备模型上层架构的最后一个单元:class.class的初始化同样是在driver_init下: driver_init-->classes_init int __init classes_init(void) { class_kset = kset_create_and_add("class", NULL, NULL); if原创 2012-04-14 23:22:25 · 2097 阅读 · 0 评论 -
linux文件系统的系统分析--(十三)sysfs和设备模型--Device
分析完了bus,接下来分析device: 同样在driver_init-->devices_init int __init devices_init(void) { devices_kset = kset_create_and_add("devices", &device_uevent_ops, NULL); if (!devices_kset) return -ENO原创 2012-04-11 20:32:09 · 2495 阅读 · 0 评论 -
linux文件系统的系统分析--(十四)sysfs和设备模型--Driver
看完了device看driver,给出device_driver的结构体: struct device_driver { const char *name; struct bus_type *bus; struct module *owner; const char *mod_name; /* used for built-in modules */ bool suppre原创 2012-04-11 21:26:02 · 1817 阅读 · 0 评论 -
linux文件系统的系统分析--(十一)sysfs和设备模型--Bus
在分析设备模型的bus之前,我们看一下初始化的过程,很有意思: start_kernel-->rest_init-->kernel_init-->do_basic_setup 在do_basic_setup中有个usermodehelper_init有意思,凭感觉,这个函数与kobject_uevent有联系,kobject_uevent做什么的,就是内核空间来通知用户空间原创 2012-04-08 21:45:30 · 2468 阅读 · 0 评论 -
linux设备模型之kobject
<!-- @page {margin:2cm} p {margin-bottom:0.21cm} --> Linux驱动模型是整个linux设备驱动的基石。一般来说,驱动工程师可以忽略设备模型,因为底下的设备模型可以处理好复杂的device、driver、bus以及class等等的关系。了解linux的模块机制,了解file的read、write和ioctl,了解reg原创 2012-02-25 20:41:09 · 2652 阅读 · 0 评论 -
linux设备模型之字符设备
<!-- @page {margin:2cm} p {margin-bottom:0.21cm} --> Linux设备模型之字符设备 以ldd中scull为例来分析一下设备模型的字符设备。 对scull做了一些修改,一方面是内核版本不同引起的一些定义上的修改,另一方面是去除了scull中包括的scullpipe等设备。 为使得我们对字符设备更清晰,我们不原创 2012-02-25 20:46:49 · 3772 阅读 · 0 评论 -
linux设备模型之kset
<!-- @page {margin:2cm} p {margin-bottom:0.21cm} --> 同样的,在看kset-example之前我们先看下kset的相关操作函数。 kobject_set_name 设定kobject的name 这个函数就是前面介绍的kobject_set_name_vargs函数的封装。 kset_init原创 2012-02-25 20:41:55 · 1914 阅读 · 0 评论 -
LDM上层建筑之Bus---局部窥探
<br />首先看下sys/devices怎么来的?<br />在初始的启动汇编中会跳到start_kernel---->rest_init---->kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND)---->do_basic_setup(void)---->driver_init(void)---->buses_init();<br /> <br />int __init buses_init(void)<br />{<br /> bus_原创 2011-01-02 19:24:00 · 1469 阅读 · 0 评论 -
LDM上层建筑之dev---局部窥探
首先看下sys/devices怎么来的?在初始的启动汇编中会跳到start_kernel---->rest_init---->kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND)---->do_basic_setup(void)---->driver_init(void)---->devices_init();int __init devices_init(void){ devices_kset = kset_create_and_add("d原创 2010-12-28 23:43:00 · 1870 阅读 · 0 评论 -
kobject_example 初探
首先看了下/Documentation/kobject.txt文档中的说明,然后结合sample/kobject/kobject-example.c对kobject做一些初步了解。在内核配置中将kobject-example配置成model编译成.ko加载到内核之中。在insmod kobject-example.ko时会用到module_init(example_init);而example_init函数如下:static int example_init(void){ int retval; /* *原创 2010-12-25 18:19:00 · 7664 阅读 · 1 评论 -
linux文件系统的系统分析--(十七)总结
从文件系统写到设备模型,写的很舒畅,写的过程中自己重新做了整理思考,很有收获. 那我之所以将文件系统和设备模型放在一起写,因为linux的哲学就是一切都是文件,所以文件系统和设备模型是分不开的,单单理解设备模型还是不充分的,理解了文件系统后,再看设备模型就会有不一样的感受. 王阳明说"知行合一",做了这么多的理论上的分析后,就需要找块板子来实践,验证和加原创 2012-04-15 22:30:49 · 1700 阅读 · 0 评论