博客
- 分享
块设备驱动(2)
-
2011-5-13 22:08
-
结构gendisk是通用硬盘的描述,其结构体如下: struct gendisk { ?? int major;//主设备号 ?? int first_minor;//第一个词设备号 ?? int minors; ??//描述被磁盘使用的设备号的成员. 至少, 一个驱动器必须使用最少一个次编号. 如果你的驱动会是可分 ??//区的, 但是(并且大部分应当是), 你要分配一个次编号给每个可能的分 ...
-
个人分类: linux|684 次阅读|0 个评论
- 分享
块设备驱动(1)
-
2011-5-13 22:06
-
每个块设备用一个块设备结构进行描述,其结构如下: struct block_device { ?? dev_t bd_dev; /* not a kdev_t - it's a search key */ ?? struct inode * bd_inode; //多大用处 ?? int bd_openers;//打开该设备计数值 ?? struct semaphore bd_sem; //打开或关闭互斥 ?? struct semaphore bd_mount_sem; /* mount mutex */ ...
-
个人分类: linux|887 次阅读|0 个评论
- 分享
硬件平台初始化笔记
-
2011-5-13 22:04
-
对一个不知名的芯片如何移植呢?应选择同一内核的芯片来使用,仿造该芯片生成arch/arm/mach-xxx包和include/asm-arm/arch-xxx包,之后才根据具体芯片的配置来修改相应的文件和Makefile以及Kconfig.在移植过程中需要了解bootloader将控制权移交给内核时,与硬件平台相关的内核是如何处理的。 ?? uboot将cpu标志号和启动参数 ...
-
个人分类: linux|877 次阅读|0 个评论
- 分享
内核编译
-
2011-5-13 22:03
-
编译选项文件Kconfig语法结构: ??config:主要指定目录项目(配置一个目录),并定义符号值. config 变量 ?? ??menuconfig:其定义的符号用于控制从属的config命令,其包含的config可以使用多个. ?? ??choice和endchoice:它们中包含的多个config命令中只能选择一个时使用. ?? ??comment:从菜单中输出支付串的功能. Comment”-- ...
-
个人分类: linux|764 次阅读|0 个评论
- 分享
linux/compile.h头文件说明
-
2011-5-13 22:03
-
#ifndef __ASSEMBLY__ ??#ifdef __CHECKER__ //如果使用Sparse对代码进行检查,那么内核代码就会定义__CHECKER__宏,否则就不定义。 ?? ??# define __user __attribute__((noderef, address_space(1))) //是用来修饰一个变量的,这个变量必须是非解除参考(no dereference)的,即这个变量地址必须是有效的,而且变量所 ...
-
个人分类: linux|753 次阅读|0 个评论
- 分享
移植笔记
-
2011-5-13 22:02
-
附加uboot移植笔记 硬件平台:优龙 FS2410 开发板 Bootloader: uboot.1.1.6 Os 内核: linux-2.6.14.1 根文件系统格式:cramfs 编译情况:在编译 u-boot 和 linux 内核时出现一些情况。 在使用 cross-3.3.2 交叉编译环境编译 uboot 时没有出现任何问题,在编译 linux 内核时出现 arm-linux-gcc ...
-
个人分类: linux|756 次阅读|0 个评论
- 分享
平台设备使用介绍
-
2011-5-13 22:00
-
设备驱动中,平台设备作为一个虚拟的设备和总线可以大大简化设计难度。 ??其由两部分构成 platform_device和 platform_driver。其设计顺序为定义 platform_device - 注册 platform_device- 定义 platform_driver- 注册 platform_driver 。platform_device 来描述该结构一个重要的元素是 resource ,该元素存入了 ...
-
个人分类: linux|670 次阅读|0 个评论
- 分享
信号和AIO
-
2011-5-13 21:58
-
异步阻塞IO:阻塞通知非阻塞io,即io操作发出后不阻塞IO操作,将通知阻塞,直到采用select查询后才获得操作结果; ?? 异步非阻塞IO:即io操作发出后不阻塞IO操作也不阻塞通知,当操作完成后内核通过信号或回调方式主动通知调用进程,而不需要等待调用者主动进行查询。 ?? 在异步IO操作中,当IO资源可用时驱动释放相应的信 ...
-
个人分类: linux|747 次阅读|0 个评论
- 分享
等待队列
-
2011-5-13 21:57
-
在阻塞IO操作中,用于实现阻塞进程的唤醒和阻塞,其常常与进程的调度函数混合使用。当将当前进程加入等待队列链表后通常使用__set_current_state(TASK_INTERRUPTIBLE)和schedule()将进程睡眠,资源可使用后,释放资源的进程通过wake_up_interruptible唤醒需要资源的已睡眠进程,再将该进程的等待队列删除。 ??struct __wai ...
-
632 次阅读|0 个评论
- 分享
信号量和自旋锁的选择
-
2011-5-13 21:54
-
自旋锁是专为防止多处理器并发而引入的一种锁,它在内核中大量应用于中断处理等部分;自旋锁最多只能被一个内核任务持有;在单处理器上,自旋锁仅仅当作一个设置内核抢占的开关,内核不能被抢占。 ?? 信号量是一种睡眠锁。如果有一个任务试图获得一个已被持有的信号量时,信号量会将其推入等待队列,然后让其睡眠;当持有 ...
-
个人分类: linux|769 次阅读|0 个评论