转自:http://www.cnblogs.com/geneil/archive/2011/12/04/2275372.html 大部分驱动除了需要具备读写设备的能力之外,还需要具备对硬件控制的能力。 一、在用户空间,使用ioctl系统调用来控制设备,原型如下:int ioctl(int fd,u....
分类:
系统相关 时间:
2015-09-18 15:12:10
阅读次数:
264
在上一篇中我们已经了解了字符设备驱动的原理,也了解了应用层调用内核函数的机制,但是我们每次操作设备,都必须首先通过mknod命令创建一个设备文件名,比如说我们要打开u盘,硬盘等这些设备,难道我们还要自己创建,就如同刘老师常说的一句话,这也太山寨了吧,所以我们今天我们来点比较专业的,让函数帮我们自.....
分类:
系统相关 时间:
2015-09-12 21:50:04
阅读次数:
293
产生竞态的情况:(1)对称多处理器(SMP)的多个CPU(2)单CPU的进程与抢占它的进程(3)中断与进程之间解决竞态途径:互斥访问临界区:访问共享资源的代码区互斥途径:中断屏蔽、原子操作、自旋锁、信号量、互斥体中断屏蔽local_irq_disable() /*屏蔽中断*/ ...critical...
分类:
系统相关 时间:
2015-09-07 19:34:58
阅读次数:
334
在编写设备驱动时,tasklet机制是一种比较常见的机制,通常用于减少中断处理的时间,将本应该是在中断服务程序中完成的任务转化成软中断完成。为了最大程度的避免中断处理时间过长而导致中断丢失,有时候我们需要把一些在中断处理中不是非常紧急的任务放在后面执行,而让中断处理程序尽快返回。在老版本的linux...
分类:
系统相关 时间:
2015-08-31 16:48:18
阅读次数:
169
来自:http://www.hovercool.com/en/Class_create,_device_create,_device_create_file开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点(包括ldd3中不少例子也是这样),实际上现在Linux内核为...
分类:
其他好文 时间:
2015-08-25 19:10:36
阅读次数:
205
(一):操作系统内核访问的主要设备: (1):字符型设备:键盘,打印机(2):数据块设备:软盘,硬盘,光盘(二):linux设备驱动程序的主要功能: (1):对设备进行初始化。 (2):使设备投入运行和退出服务(3):从设备接收数据并将它们送向内核(4):将数据从内核送到设备(5):检测处理设备出....
分类:
系统相关 时间:
2015-08-25 14:09:19
阅读次数:
230
来自:http://www.hovercool.com/en/Class_create,_device_create,_device_create_file开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点(包括ldd3中不少例子也是这样),实际上现在Linux内核为...
分类:
其他好文 时间:
2015-08-19 12:44:22
阅读次数:
140
10.中断与时钟
10.1 中断与定时器
所谓中断是指CPU在执行程序的过程中,出现了某些突发事件急待处理,CPU必须暂停执行当前程序,转去处理突发事件,处理完毕后CPU又返回原程序被中断的位置并继续执行。
根据中断的来源,中断可分为内部中断和外部中断,内部中断的中断来源来自CPU内部(软件中断、溢出、除法错误等...
分类:
系统相关 时间:
2015-08-13 15:44:22
阅读次数:
686
3.2.7 错误处理 #include char * collect_data(char *userbuffer) { char *buffer; /* ... */ buffer = kmalloc(100, GFP_KERNEL); if (!buf...
分类:
系统相关 时间:
2015-08-11 20:44:20
阅读次数:
124
前一篇blog linux内核内存分配(一、基本概念)
主要是分析linux内核内存的分配和物理页分配函数接口。但是在实际的操作中,不一定所有内存申请都需要一个物理页,很多只是需要分配几K大小的内存就可以。所以就需要更小的内存分配函数。刚开始看这个有点不懂,不过懂了就很简单了。哈哈。
摘抄《深入linux设备驱动程序内核机制》的一段话:slab分配器的基本思想是,先利用页面分配...
分类:
系统相关 时间:
2015-08-10 22:13:56
阅读次数:
367