分享 块设备驱动(2)
yd2763132 2011-5-13 22:08
结构gendisk是通用硬盘的描述,其结构体如下: struct gendisk { ?? int major;//主设备号 ?? int first_minor;//第一个词设备号 ?? int minors; ??//描述被磁盘使用的设备号的成员. 至少, 一个驱动器必须使用最少一个次编号. 如果你的驱动会是可分 ??//区的, 但是(并且大部分应当是), 你要分配一个次编号给每个可能的分 ...
个人分类: linux|728 次阅读|0 个评论
分享 块设备驱动(1)
yd2763132 2011-5-13 22:06
块设备驱动(1)
每个块设备用一个块设备结构进行描述,其结构如下: 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|945 次阅读|0 个评论
分享 硬件平台初始化笔记
yd2763132 2011-5-13 22:04
对一个不知名的芯片如何移植呢?应选择同一内核的芯片来使用,仿造该芯片生成arch/arm/mach-xxx包和include/asm-arm/arch-xxx包,之后才根据具体芯片的配置来修改相应的文件和Makefile以及Kconfig.在移植过程中需要了解bootloader将控制权移交给内核时,与硬件平台相关的内核是如何处理的。 ?? uboot将cpu标志号和启动参数 ...
个人分类: linux|930 次阅读|0 个评论
分享 内核编译
yd2763132 2011-5-13 22:03
编译选项文件Kconfig语法结构: ??config:主要指定目录项目(配置一个目录),并定义符号值. config 变量 ?? ??menuconfig:其定义的符号用于控制从属的config命令,其包含的config可以使用多个. ?? ??choice和endchoice:它们中包含的多个config命令中只能选择一个时使用. ?? ??comment:从菜单中输出支付串的功能. Comment”-- ...
个人分类: linux|803 次阅读|0 个评论
分享 linux/compile.h头文件说明
yd2763132 2011-5-13 22:03
#ifndef __ASSEMBLY__ ??#ifdef __CHECKER__ //如果使用Sparse对代码进行检查,那么内核代码就会定义__CHECKER__宏,否则就不定义。 ?? ??# define __user __attribute__((noderef, address_space(1))) //是用来修饰一个变量的,这个变量必须是非解除参考(no dereference)的,即这个变量地址必须是有效的,而且变量所 ...
个人分类: linux|798 次阅读|0 个评论
分享 移植笔记
yd2763132 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|796 次阅读|0 个评论
分享 平台设备使用介绍
yd2763132 2011-5-13 22:00
设备驱动中,平台设备作为一个虚拟的设备和总线可以大大简化设计难度。 ??其由两部分构成 platform_device和 platform_driver。其设计顺序为定义 platform_device - 注册 platform_device- 定义 platform_driver- 注册 platform_driver 。platform_device 来描述该结构一个重要的元素是 resource ,该元素存入了 ...
个人分类: linux|710 次阅读|0 个评论
分享 信号和AIO
yd2763132 2011-5-13 21:58
异步阻塞IO:阻塞通知非阻塞io,即io操作发出后不阻塞IO操作,将通知阻塞,直到采用select查询后才获得操作结果; ?? 异步非阻塞IO:即io操作发出后不阻塞IO操作也不阻塞通知,当操作完成后内核通过信号或回调方式主动通知调用进程,而不需要等待调用者主动进行查询。 ?? 在异步IO操作中,当IO资源可用时驱动释放相应的信 ...
个人分类: linux|798 次阅读|0 个评论
分享 等待队列
yd2763132 2011-5-13 21:57
在阻塞IO操作中,用于实现阻塞进程的唤醒和阻塞,其常常与进程的调度函数混合使用。当将当前进程加入等待队列链表后通常使用__set_current_state(TASK_INTERRUPTIBLE)和schedule()将进程睡眠,资源可使用后,释放资源的进程通过wake_up_interruptible唤醒需要资源的已睡眠进程,再将该进程的等待队列删除。 ??struct __wai ...
668 次阅读|0 个评论
分享 信号量和自旋锁的选择
yd2763132 2011-5-13 21:54
自旋锁是专为防止多处理器并发而引入的一种锁,它在内核中大量应用于中断处理等部分;自旋锁最多只能被一个内核任务持有;在单处理器上,自旋锁仅仅当作一个设置内核抢占的开关,内核不能被抢占。 ?? 信号量是一种睡眠锁。如果有一个任务试图获得一个已被持有的信号量时,信号量会将其推入等待队列,然后让其睡眠;当持有 ...
个人分类: linux|801 次阅读|0 个评论
关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
返回顶部