- 博客(11)
- 资源 (7)
- 收藏
- 关注
原创 Linux设备驱动模型-Uevent
前言当一个设备动态的加入到系统时候(比如常见的将U盘插入到PC机器上), 设备驱动程序就需要动态的检测到有设备插入了系统,就需要将此事件通知到用户层,然后用户层对这一事件做响应的处理,比如加载USB驱动,更新UI等。而将此事件通知到用户层就需要某种机制,典型的就是mdev hotplug和udev。关于udev和mdev hotplug可以在上篇文章有解释。Linux系统对uevent机制的具
2016-09-29 17:21:16 4605 1
转载 udev和mdev hotplug
1. udev 和mdev 是两个使用uevent 机制处理热插拔问题的用户空间程序,两者的实现机理不同。udev 是基于netlink 机制的,它在系统启动时运行了一个deamon 程序udevd,通过监听内核发送的uevent 来执行相应的热拔插动作,包括创建/删除设备节点,加载/卸载驱动模块等等。2. mdev 是基于uevent_helper 机制的,它在系统启动时修改了内核中
2016-09-29 15:31:57 1256
原创 Linux设备驱动模型-Kset
前言当多个kobject属于同一类的时候,为了方便管理,就引入了Kset。Kset可以认为是一组kobject的集合,是kobject的容器。比如/sys/bus下就属于同一类kobject。shell@test:/sys/bus $ lsclockeventsclocksourcecontainercoresightcpuevent_sourcehid
2016-09-26 15:44:31 1094
原创 Linux设备驱动模型-Ktype
前言在之前创建的object的时候,使用的是kobject_create_and_add函数。而此函数中创建的object使用的是默认的ktype(dynamic_kobj_ktype), 如果想指定ktype的话就需要使用kobject_init_and_add函数来创建object。那ktype是具体的作用是什么? ktype其实就是kobject的属性的操作集合,因为某些模块的操作集合相
2016-09-23 17:38:01 1539
原创 Linux设备驱动模型-Kobject
概述Kobject是linux设备驱动模型的基础,也是设备模型中抽象的一部分。如果想了解设备驱动模型就需要明白Kobject的构成或原理。linux内核为了兼容各种形形色色的设备,就需要对各种设备的共性进行抽象,抽象出一个基类,其余的设备只需要继承此基类就可以了。而此基类就是kobject,但是C语言没有面向对象语法,这时候就需要将此基类(Kobject)嵌入到具体的结构体中,从而就可以访问控
2016-09-22 15:23:49 2445
原创 Linux内核通知链(Notifier)
引入在linux内核中,各个子系统之间有很强的相互关系,某些子系统可能对其他子系统产生的事件比较感兴趣。因此内核引入了notifier机制,当然了notifier机制只能用在内核子系统之间,不能用在内核与应用层之间。比如当系统suspend的时候,就会使用到notifier机制来通知系统的内核线程进行suspend。内核实现的notifier机制代码位于kernel/kernel/
2016-09-21 15:34:37 3205 2
原创 workqueue
Workqueue引入在之前的softirq中提到过,内核在中断的bottom half引入了softirq, tasklet, workqueue。 而softirq和tasklet只能用在中断上下文中,而且不可以睡眠。所以内核引入了workqueue,工作队列运行在进程上下文,同时可以睡眠。在以前版本的内核中workqueue的代码比较简单。在linux2.6.30代码量在1000行左
2016-09-13 17:44:16 2110
原创 Tasklet
Tasklet有的时候在驱动程序中需要延迟某些操作的进行,最典型的操作就是在驱动程序的中断处理函数延迟操作。比如在DMA驱动中,当数据传输完毕之后会触发中断的,通常这时候会启动一个tasklet来完成耗时的操作,也就是中断的下半部,让中断尽早的返回。在Softirq中说过了,Tasklet的实现是基于Softirq的。也就是说Tasklet是Softirq中的一种。根据优先级不同,Linu
2016-09-08 17:59:04 766
原创 软中断SOFTIRQ
软中断的引入软中断的出现和linux系统对中断的划分是分不开的。linux系统将整个中断处理过程分为了两部分,分别为上半部(Top Half)和下半部(Bottom Half),之所以要这样分是因为关闭中断的时间不能过长,也就是在关闭中断期间尽可能少干事,否则影响整个系统的性能。所以linux系统将中断处理分为两部分,在上半部全程关闭中断,下半部打开中断。而在上半部主要干一些和硬件有关的操作,
2016-09-08 11:13:23 1883
原创 preempt_count
定义/* * low level task data that entry.S needs immediate access to. * __switch_to() assumes cpu_context follows immediately after cpu_domain. */struct thread_info { unsigned long flags; /* low
2016-09-06 15:04:32 5325 1
转载 解压与压缩ramdisk.img文件,生成uramdisk.img文件
原文链接为: http://blog.csdn.net/hancunai0017/article/details/6873948 1. 在myandroid/out/target/product/imx51_bbg目录下可以找到要解压的ramdisk.img文件。 通过file命令可以查看ramdisk.img文件的类型: root@mail:/opt/
2016-09-06 10:38:28 1660
ARMGIC手册详解.zip
2020-03-21
ARM_v8_architecture参考手册.zip
2020-03-21
ARMv8-A_Architecture.zip
2020-03-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人