![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux代码分析
longyue0917
这个作者很懒,什么都没留下…
展开
-
lib\kobject.c文件分析
本文件的函数列表: char *kobject_get_path(struct kobject *kobj, gfp_t gfp_mask)获取指定kobject的完整路径名 void kobject_init(struct kobject * kobj)原创 2011-09-10 20:22:34 · 1623 阅读 · 0 评论 -
arch\arm\mm\mmu.c
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);#define DEFINE_PER_CPU(type,原创 2012-04-08 16:32:29 · 2491 阅读 · 1 评论 -
drivers\base文件分析笔记的WORD原始文件打包下载地址
资源地址:http://download.csdn.net/detail/longyue0917/3953384原创 2011-12-22 00:32:55 · 682 阅读 · 0 评论 -
drivers\base\cpu.c
小结: 1、struct sys_device结构体是struct sysdev_class结构体的容器 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@函数列表: int __devinit register_cpu(struct cpu *cpu, int num)CPU注册 struct原创 2011-12-22 00:24:10 · 1209 阅读 · 0 评论 -
drivers\base\platform.c
小结: 1、通过文件名可以看出,这个文件是和平台有关的函数2、声明了结构体struct platform_object,作为platform_device平台设备的载体 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@函数列表: @@@@@ 平台资源的操作模块struct resource原创 2011-12-22 00:23:31 · 2850 阅读 · 0 评论 -
drivers\base\init.c
前面分析的9个文件,都是为这个文件服务的,这个文件负责调用驱动的初试化代码 //驱动初始化void __init driver_init(void){ //这些初始化主要是几个子系统的注册 devices_init(); //设备初始化(core.c) buses_init();原创 2011-12-22 00:25:45 · 763 阅读 · 0 评论 -
drivers\base\firmware.c
小结:1、 声明firmware_subsys子系统2、 这个文件也就三个函数,注册,反注册,初始化(直接调用注册函数) @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@函数列表: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@原创 2011-12-22 00:25:02 · 745 阅读 · 0 评论 -
\lib\klist.c
小结: 下面这个图应该能说明全部问题 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@函数列表: void klist_init初始化klist,主要操作是挂空k->k_list,初始化k_lock锁,挂上get和put函数 void klist_add_head(struct klist_node原创 2011-12-11 15:25:30 · 1436 阅读 · 0 评论 -
drivers\base\bus.c
小结: 1、热插拔模块:这个模块的函数主要实现的是驱动和设备的绑定,解除,以及驱动的自动探测等功能 2、看本代码前最好先看一次/lib/klist.c,否则代码中关于klist和node的操作会把你绕晕 3、bus的模型:Ø 系统一启动就会自动执行buses_init来注册总线子系统(bus_subsys),这个子系统设置了总线的过滤,show,st原创 2011-12-18 10:16:44 · 1589 阅读 · 0 评论 -
drivers\base\class.c
小结: 这个文件中,声明了类子系统class_subsys,作为所有类kobject的kset声明了class_obj_subsys子系统,作为所有类设备kobject的kset类设备class_device的父类是class,或则说,class是一个容器,里面包含了很多class_device @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@原创 2011-12-18 10:24:11 · 994 阅读 · 0 评论 -
drivers\base\driver.c
小结: 本文件主要是负责驱动的操作 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@函数列表: int driver_for_each_device(struct device_driver * drv, struct device * start, void * data,原创 2011-12-18 10:23:14 · 1046 阅读 · 0 评论 -
drivers\base\dd.c
小结: 文件的一开始就指出了这个文件的作用:The core device/driver interactions 在阅读代码之前,建议先看看http://bbs.chinaunix.net/thread-2010492-1-1.html首先要明确一个概念:一个设备只能对应一个驱动,一个驱动可以挂上很多设备,所以驱动有一个链表,上面挂着支持的设备: 这个文件的代原创 2011-12-18 10:22:36 · 1647 阅读 · 0 评论 -
drivers\base\sys.c
小结: 从sysdev_shutdown函数的实现,我们可以大概的分析一下驱动的层次模式如下:1、最顶层的是system_subsys,所有的cls都挂载在他的链表中2、每一个cls有一个驱动链表,这个驱动链表又可以按sysdev进行一个分组,但是分组只是为了管理方便,驱动还是挂载在cls下的。3、分组虽然只是管理,但是驱动的一些函数执行,比如shutdown,resume等,原创 2011-12-18 10:15:26 · 1913 阅读 · 0 评论 -
drivers\base\core.c
文件小结:读完这个文件的代码,其实这个文件实现的最关键的代码就是device_add函数,这个函数之前的所有函数都是为这个函数服务的。而这个函数之后的函数则很简单,基本和这个函数互相映衬了。而device_add函数在后面分析平台设备的时候,平台设备的添加platform_device_add函数则主要调用了该函数 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@原创 2011-12-18 10:14:23 · 1525 阅读 · 0 评论 -
kobject之kobject_uevent.c文件分析
struct kset_uevent_ops { int (*filter)(struct kset *kset, struct kobject *kobj); //过滤函数,kset中的kobj是否需要原创 2011-09-11 17:36:40 · 4741 阅读 · 0 评论 -
linux内核注解 -- 第一季
内核版本为2.6.24http://www.kuaipan.cn/file/id_80979117285062971.htm注解的部分有1、start_kernel之前的代码,2、start_kernel的代码及其所应用到的知识点3、drivers/base文件夹中的内容第二季预告: mtd原创 2013-03-27 23:39:22 · 1167 阅读 · 1 评论