摘要:作者:刘洪涛,华清远见嵌入式学院高级讲师,ARM公司授权ATC讲师。 关于自旋锁用法介绍的文章,已经有很多,但有些细节的地方点的还不够透。我这里就把我个人认为大家容易有疑问的地方拿出来讨论一下。 一、自旋锁(spinlock)简介 自旋锁在同一时刻只能被最多一个内核任务持有,所以一个时刻只有一个线程允许存在于临界区中。这点可以应用在多处理机器、或运行在单处理器上的抢占式内核中需要的锁定服务。 二、信号量简介 这里也介绍下信号量的概念,因为它的用法和自旋锁有相似的地方。Linux中的信号量是一种睡眠锁。如果有一个任务试图获得一个已被持有的信号量时,信号量会将其推入等待队列,然后让其睡眠。这时处.
阅读全文
03 2012 档案
摘要:本章已介绍了很多符号给并发的管理. 最重要的这些在此总结:#include <asm/semaphore.h> //定义信号量和其上操作的包含文件.信号量的定义和初始化(1)静态定义及初始化DECLARE_MUTEX(name);DECLARE_MUTEX_LOCKED(name); (2)动态定义及初始化struct semaphore semvoid init_MUTEX(struct semaphore *sem);void init_MUTEX_LOCKED(struct semaphore *sem);信号量的获取和释放void down(struct semaphore
阅读全文
摘要:本章介绍了下面符号和头文件. struct file_operations 和 struct file 中的成员的列表这里不重复了.#include <linux/types.h>dev_t dev_t 是用来在内核里代表设备号的类型.int MAJOR(dev_t dev);int MINOR(dev_t dev);从设备编号中抽取主次编号的宏.dev_t MKDEV(unsigned int major, unsigned int minor);从主次编号来建立 dev_t 数据项的宏定义.#include <linux/fs.h>"文件系统"头
阅读全文
摘要:模块参数 驱动需要知道的几个参数因不同的系统而不同. 从使用的设备号( 如我们在下一章见到的 )到驱动应当任何操作的几个方面. 例如, SCSI 适配器的驱动常常有选项控制标记命令队列的使用, IDE 驱动允许用户控制 DMA 操作. 如果你的驱动控制老的硬件, 还需要被明确告知哪里去找硬件的 I/O 端口或者 I/O 内存地址. 内核通过在加载驱动的模块时指定可变参数的值, 支持这些要求. 这些参数的值可由 insmod 或者 modprobe 在加载时指定; 后者也可以从它的配置文件(/etc/modprobe.conf)读取参数的值. 这些命令在命令行里接受几类规格的值. 作为演示这种能
阅读全文
摘要:45 struct fb_info *registered_fb[FB_MAX] __read_mostly;这个是全局的变量,通过这个全局变量,在系统内可以随时获取需要的fb_info,具体的获取方法是通过比对 registered_fb[i]->fix.id来确定需要的fb_info, 示例代码如下 for (i = 0; i < num_registered_fb; i++) { char *idstr = registered_fb[i]->fix.id; if (strcmp(idstr, "DISP3 FG") == 0) { fbi = re
阅读全文