driver kernell相关知识
qpfang
这个作者很懒,什么都没留下…
展开
-
linux notifier
Linuxnotifier技术 内核通知链介绍(引用网络资料): 在linux内核系统中,各个模块、子系统之间是相互独立的。Linux内核可以通过通知链机制来获取由其它模块或子系统产生的它感兴趣的某些事件。例如,可以通过通知链来获取某总线上的设备增加、删除情况,来动态添加和卸载dev文件设备。 Linux内核中包含四种类型通知链: Atomic notifierchains: 这种类型通知原创 2012-08-29 11:11:39 · 2054 阅读 · 0 评论 -
中断及其延期执行技术
一 .中断基础 中断是除了系统调用之外的另一种可进行用户空间和内核空间切换的途径; 中断分为硬件中断(hardware interrupt)和软中断(softirq),下文中的中断是指硬件中断。 硬件中断:由系统本身和它所接外设产生的,用于实现更高效率的驱动程序,也可能是由处理器运行错误和异常的程序所导致。前者可称为异步中断,后者叫同步中断原创 2012-11-02 09:02:29 · 1427 阅读 · 0 评论 -
内存管理相关知识
对于32位的系统,它的寻址空间为4GiB,linux系统通常会把这个4GiB的虚拟地址空间按3:1进行分配,即前面3GiB用于用户空间,后而1GiB用于内核空间。 用户空间通过中断异常或系统调用切换到内核空间,用户空间访问内存时,它不会直接去访问物理内存,而是通过页表机制去访问,虚拟地址与物理地址之间的关系如图1所示: 图1 32位处理上虚拟地址与物理地址之间关系原创 2013-01-21 14:46:50 · 931 阅读 · 0 评论 -
ubuntu环境下重新编译内核
由于调试内核、驱动或工作需要,有可能需要对ubuntu下的内核进行重新编译,本文对内核重新编译过程进行简单分析,在进行重新编译内核前你可以通过uname -a来确认你的linux系统的当前版本。 1.根据你的需要获取内核源码,获取内核源码有两种方式,一种是直接到http://www.kernel.org/下载你要的源码,另一种是通过在terminal中输入shell命令 sudo apt-g原创 2013-01-26 17:53:08 · 18554 阅读 · 1 评论 -
翻译:Linux的电源管理架构
本文转自DroidPhone的“http://blog.csdn.net/droidphone/article/details/6664057” Linux的源代码里,大部分都属于设备驱动程序的代码,因此,大多数电源管理(PM)的代码也是存在于驱动程序当中。很多驱动程序可能只做了少量的工作,另外一些,例如使用电池供电的硬件平台(移动电话等)则会在电源管理上做了大量的工作。 这转载 2013-01-08 14:47:09 · 933 阅读 · 0 评论 -
linux下热插拔事件的产生是怎样通知到用户空间,kobject_uevent_env之uevent
1.kobject, ktype, kset kobject代表sysfs中的目录。 ktype代表kobject的类型,主要包含release函数和attr的读写函数。比如,所有的bus都有同一个bus_type;所有的class都有同一个class_type。 kset包含了subsystem概念,kset本身也是一个kobject,所以里面包含了一个kobject对象。转载 2012-12-12 16:49:15 · 2108 阅读 · 0 评论 -
linux 阻塞等待
对于一个进程"睡眠"意味着什么? 当一个进程被置为睡眠, 它被标识为处于一个特殊的状态并且从调度器的运行队列中去除. 直到发生某些事情改变了那个状态, 这个进程将不被在任何 CPU 上调度, 并且, 因此, 将不会运行. 一个睡着的进程已被搁置到系统的一边, 等待以后发生事件. 当你运行在原子上下文时不能休眠,如果在获得自旋锁情况下,在中断处理函数中;当进程从休眠中醒来时,必须对原创 2012-09-07 14:45:45 · 3905 阅读 · 0 评论 -
内核调试技术 profs
/proc文件系统是一种特殊的,由软件创建的文件系统,内核通过它向用户输出信息; /proc下面的每个文件都绑定一个内核函数,当用户读取其中文件时,内核函数会动态生 成文件的内容。例如,/proc/modules列出的是当前系统中已加载模块;linux中的很多工 具都是通过/proc来获取它们所需要的信息,如ps,top等 /proc文件可以通过下面函数创建原创 2012-09-21 14:08:45 · 747 阅读 · 0 评论 -
6410 uboot代码重定位问题
6410uboot有一段代码用于重定位代码: adr r0, _start cmp r0, r6 beq clear_bss /* skip relocation */ mov r1, r6 /* r1 <- scratch for copy_loop */ ldr r3, _bss_start_ofs add r2, r0, r3 /* r2 <- source end原创 2013-02-27 23:18:15 · 1419 阅读 · 0 评论