gdt-A20

导航

2012年1月16日 #

[转]内核通知链 学习笔记

摘要: 转自:http://bbs.chinaunix.net/thread-2011776-1-1.html1.通知链表简介 大多数内核子系统都是相互独立的,因此某个子系统可能对其它子系统产生的事件感兴趣。为了满足这个需求,也即是让某个子系统在发生某个事件时通知其它的子系统,Linux内核提供了通知链的机制。通知链表只能够在内核的子系统之间使用,而不能够在内核与用户空间之间进行事件的通知。 通知链表是一个函数链表,链表上的每一个节点都注册了一个函数。当某个事情发生时,链表上所有节点对应的函数就会被执行。所以对于通知链表来说有一个通知方与一个接收方。在通知这个事件时所运行的函数由被通知方决定,实际.. 阅读全文

posted @ 2012-01-16 10:26 gdt-A20 阅读(306) 评论(0) 推荐(0) 编辑

2012年1月15日 #

start_kernel----cgroup_init_early<五>

摘要: In kernel/cgroup.c 1 /** 2 * cgroup_init_early - cgroup initialization at system boot 3 * 4 * Initialize cgroups at system boot, and initialize any 5 * subsystems that request early init. 6 */ 7 int __init cgroup_init_early(void) 8 { 9 int i;10 atomic_set(&init_css_set.refcount, 1);11 ... 阅读全文

posted @ 2012-01-15 23:18 gdt-A20 阅读(941) 评论(0) 推荐(0) 编辑

start_kernel---boot_init_stack_canary<四>

摘要: In init/main.c1 /*2 * Set up the the initial canary ASAP:3 */4 boot_init_stack_canary();in arch/arm/include/asm/stackprotector.h 1 /* 2 * Initialize the stackprotector canary value. 3 * 4 * NOTE: this must only be called from functions that never return, 5 * and it must always be inline... 阅读全文

posted @ 2012-01-15 23:14 gdt-A20 阅读(1349) 评论(0) 推荐(0) 编辑

start_kernel---lockdep_init<三>

摘要: 1 /*2 * Need to run as early as possible, to initialize the3 * lockdep hash:4 */5 lockdep_init();位于kernel/lockdep.c 1 void lockdep_init(void) 2 { 3 int i; 4 5 /* 6 * Some architectures have their own start_kernel() 7 * code which calls lockdep_init(), while we also 8... 阅读全文

posted @ 2012-01-15 23:06 gdt-A20 阅读(2441) 评论(0) 推荐(0) 编辑

linux启动流程导读(arm为例)<二>

摘要: 进入init/main.cstart_kernel 1 asmlinkage void __init start_kernel(void) 2 { 3 char * command_line; 4 extern const struct kernel_param __start___param[], __stop___param[]; 5 6 smp_setup_processor_id(); 7 8 /* 9 * Need to run as early as possible, to initialize the10 * lockde... 阅读全文

posted @ 2012-01-15 22:57 gdt-A20 阅读(1146) 评论(0) 推荐(0) 编辑

2012年1月14日 #

linux启动流程导读(arm为例)<一>

摘要: ==============================================本文系本站原创,欢迎转载!转载请注明出处:http://www.cnblogs.com/gdt-a20==============================================以arm为例,分析一下kernel的启动过程;内核版本:linux-3.2.tar.gz一、arch/arm/kernel/head.s 1 /* 2 * Kernel startup entry point. 3 * --------------------------- 4 * 5 * This is... 阅读全文

posted @ 2012-01-14 15:14 gdt-A20 阅读(2036) 评论(0) 推荐(0) 编辑

spinlock导读

摘要: ==============================================本文系本站原创,欢迎转载!转载请注明出处:http://www.cnblogs.com/gdt-a20==============================================看一下spinlock,以arm为例,一、先看结构:include/linux/spinlock_types.h 1 typedef struct spinlock { 2 union { 3 struct raw_spinlock rlock; 4 5 #ifdef CONFIG_DE... 阅读全文

posted @ 2012-01-14 11:48 gdt-A20 阅读(985) 评论(0) 推荐(0) 编辑

2011年7月11日 #

linux设备模型之led子系统

摘要: ==================================本文系本站原创,欢迎转载!转载请注明出处:http://www.cnblogs.com/gdt-a20==================================时代不同了,连led都成子系统了,针对内核提供的通用模型,分析一下,好久没写文章了也!代码位于drivers/leds下,看一下Makefile 模型文件主要是:# LED Coreobj-$(CONFIG_NEW_LEDS) += led-core.oobj-$(CONFIG_LEDS_CLASS) += led-class.oobj-$(CONFIG... 阅读全文

posted @ 2011-07-11 16:24 gdt-A20 阅读(2316) 评论(0) 推荐(0) 编辑

2011年5月22日 #

linux设备模型之spi子系统

摘要: ===============================本文系本站原创,欢迎转载!转载请注明出处:http://www.cnblogs.com/gdt-a20=============================== 相比于前面介绍的i2c子系统,spi子系统相对简单,和i2c的结构也很相似,这里主要介绍一下平台无关部分的代码。先概括的说一下,spi总线或者说是spi控制器用结构体struct spi_master来表述,而一般不会明显的主动实现这个结构而是借助板级的一些信息结构,利用spi的模型填充,存在板级信息的一条链表board_list,上面挂接着板级spi设备的描述信息,其 阅读全文

posted @ 2011-05-22 16:22 gdt-A20 阅读(6000) 评论(0) 推荐(0) 编辑

2011年5月20日 #

u-boot 2010.09 支持mini2440

摘要: 手头上只有mini2440的板子,移植也是针对它,感觉老了点,^.^!,本来uboot的版本想选定最新的,如2011.03等,但是uboot从2010年12月份的版本起,前面的初始化代码结构改动比较多,而且存在很多bug,尤其是开始搬运代码处的bug(没搬运代码就改变了全局变量,对norflash这是不可以的),开始琢磨着改,但是越到后来越发现,改就改回了旧式的结构,索性还不如用旧式结构的版本,因此移植的版本选定了旧式结构的最后一个版本2010.09。 移植期间参考了Tekkaman Ninja 关于03版本的部分源代码,在此对其表示感谢! tekkamanninja.blog.chi... 阅读全文

posted @ 2011-05-20 22:03 gdt-A20 阅读(717) 评论(0) 推荐(0) 编辑