- 博客(8)
- 资源 (15)
- 收藏
- 关注
转载 Linux内核开发之内存与I/O访问(三)
一般情况下,用户空间是不可能也不应该直接访问设备的,但是设备驱动程序可实现mmap()函数,这个函数可使得用户空间能直接访问设备的物理地址。实际上,mmap()S实现了这样的一个映射过程,它将用户空间的一段内存与设备内存关联,当用户访问用户空间的这段地址范围时,实际上会转化为对设备的访问。 mmp()必须以PAGE_SIZE为单位进行映射,实际上,内存只能以页为单位进行映射,若要映射非P
2017-09-28 10:13:08 260
转载 Linux内核开发之内存与I/O访问(二)
对于一块实际的设备而言,通常会提供一组寄存器来用于控制设备,读写设备和获取设备状态,也就是我们常说的控制寄存器,数据寄存器和状态寄存器。这些寄存器可能位于I/O空间(这时叫做I/O端口),也可能位于内存空间(对应的内存空间被成为I/O内存)。在Linux中提供了一系列的I/O端口和I/O内存操作的接口如下: 1)I/O端口操作:在Linux设备驱动中,应使用Linux内核提供的函数来访问
2017-09-28 10:11:44 251
转载 Linux内核开发之内存与I/O访问(一)
“小王,今天咱们开始讲有关内存和I/O访问的内容,心里先要有点低,这部分内容还是有点烦,有点难的哦”说着话,我心里都没底,怕吓着小王,不瞒你说,当时看这部分,我可是没少费劲。“哦,那咋办,不能不学是不?没事,有小涛哥在,俺就不怕”小王信心十足的说。“哦!看不出来,还让你来安慰我了”看着小王这充满信心的样子,我也没啥顾虑了。好了,深吸一口气,开始今天的课程。 我们知道,在
2017-09-28 10:07:01 297
转载 自旋锁spin_lock和raw_spin_lock
1. 临界区(Critical Section)我们知道,临界区是指某个代码区间,在该区间中需要访问某些共享的数据对象,又或者是总线,硬件寄存器等,通常这段代码区间的范围要控制在尽可能小的范围内。临界区内需要对这些数据对象和硬件对象的访问进行保护,保证在退出临界区前不会被临界区外的代码对这些对象进行修改。出现以下几种情形时,我们需要使用临界区进行保护:(1) 在可以抢占(p
2017-09-25 15:03:25 1246
转载 自旋锁spin_lock、spin_lock_irq 和 spin_lock_irqsave 分析
自旋锁的初衷:在短期间内进行轻量级的锁定。一个被争用的自旋锁使得请求它的线程在等待锁重新可用的期间进行自旋(特别浪费处理器时间),所以自旋锁不应该被持有时间过长。如果需要长时间锁定的话, 最好使用信号量。单处理器的自旋锁:首先,自旋锁的目的如果在系统不支持内核抢占时,自旋锁的实现也是空的,因为单核只有一个线程在执行,不会有内核抢占,从而资源也不会被其他线程访问到。其次,
2017-09-25 14:50:56 977
转载 逆变器的简介、工作原理及主要构成
逆变器,英文inverter,是一种电源转换装置,可将12V或24V的直流电转换成230V、50Hz交流电或其它类型的交流电。它输出的交流电可用于各类设备,最大限度地满足移动供电场所或无电地区用户对交流电源的需要。简介逆变器又称逆变电源,是一种电源转换装置,可将12V或24V的直流电转换成240V、50Hz交流电或其它类型的交流电。它输出的交流电可用于各类设备,最大限度地满足移动供电场所或
2017-09-25 10:44:48 15035 1
转载 LTTng 简介&使用实战
LTTng,它是用于跟踪 Linux 内核、应用程序以及库的系统软件包。LTTng 主要由内核模块和动态链接库(用于应用程序和动态链接库的跟踪)组成。它由一个会话守护进程控制,该守护进程接受来自命令行接口的命令。babeltrace 项目允许将追踪信息翻译成用户可读的日志,并提供一个读追踪库,即 libbabletrace。
2017-09-25 10:36:18 2366
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人