- 2
- 0
- 约6.19千字
- 约 11页
- 2018-11-14 发布于江苏
- 举报
linux简单虚拟硬盘驱动分析报告
HYPERLINK /gui694278452/article/details/7638745 linux简单虚拟硬盘驱动分析
2012-06-06 16:15 122人阅读 HYPERLINK /gui694278452/article/details/7638745 \l comments#comments 评论(0) HYPERLINK javascript:void(0); \o 收藏 收藏 HYPERLINK /gui694278452/article/details/7638745 \l report#report \o 举报 举报
#include linux/init.h
#include linux/module.h
#include linux/kernel.h
#include linux/fs.h
#include linux/errno.h
#include linux/types.h
#include linux/fcntl.h
#include linux/vmalloc.h
#include linux/hdreg.h
#include linux/blkdev.h
#include linux/blkpg.h
#include asm/uaccess.h
#define VHDD_DEV_NAME vhdd
#define VHDD_DEV_MAJOR 220
#define VHDD_MAX_DEVICE 2
#define VHDD_MAX_PARTITONS 16 /*vhdd可以进行分区,允许的分区总共为15个,因此总分区数应为16*/
//#define VHDD_DEVICE_SIZE (4*1024*1024)
/*vhdd ram disk模拟了硬盘,因此要定义相应的内容。
扇区大小为512字节,可以任意指定
圆柱面(cylinder)书设定为256
每个cylinder的扇区数设定为16
磁头数(VHDD_HEADS)设为2
一台设备容量为(扇区大小*圆柱面数*扇区数*磁头数),这里=4M,应为disk提供的大小相一致
*/
#define VHDD_SECTOR_SIZE 512
#define VHDD_SECTORS 16
#define VHDD_HEADS 2
#define VHDD_CYLINDERS 256
#define VHDD_SECTOR_TOTAL (VHDD_SECTORS*VHDD_HEADS*VHDD_CYLINDERS)
#define VHDD_SIZE (VHDD_SECTOR_SIZE*VHDD_SECTOR_TOTAL)
typedef struct
{
unsigned char *data;
struct request_queue *queue;
spinlock_t lock;/*分别管理自己的lock*/
struct gendisk *gd;
}vhdd_device;
//char *vdisk[VHDD_MAX_DEVICE] = {NULL,};
extern char *vdisk[VHDD_MAX_DEVICE];
static vhdd_device device[VHDD_MAX_DEVICE];
/*vhdd为模拟硬盘的运行,使用内核定时器启动中断(interrupt)。为了使用内核定时器,定义 了timer_list结构体变量vhdd_timer。另外,为了处理请求函数的重入定义了vhdd_busy变量。该值不为0时,块设备驱动程序的请求处理函数vhdd_request()就会处于运行状态。这不仅仅是中断的启动方式,也是必要的变量,因为整体设备会因一个中断而运行*/
static struct timer_list vhdd_timer;
static int vhdd_busy=0;
static void vhdd_request(struct request_queue *q)
{
vhdd_device *pdevice;
struct request *vhdd_req;
char *pData;
int size;
if(vhdd_busy) return;/*先检查当前块设备是否处于处理请求的状态,如果处于处理状态,就立即终止函数。这是因为处理中断的过程中还会调用vhdd_request函数*/
while(1)
{
vhdd_req = elv_next_request(q);
if(!vhdd_req) return;/*vhdd_request函数反复执行,知道处理完等待中的所有请求。使用elv_next_request函数获得处理请求。若处理请求的request结构体地
您可能关注的文档
- DSCDMA信号的串行干扰消除算法的误码率仿真分析报告.doc
- dsexeys需求分析报告文档.doc
- DSP入门前的背景知识重点.doc
- dsp的音频信号分析报告仪.doc
- D数学矩阵的更多知识重点(自动保存的).docx
- DTII型固定式带式输送知识重点机.doc
- ECG型心电图机原理分析报告.doc
- ERP实施中的过程再造与案例分析报告.doc
- ELK日志分析报告系统.docx
- EVA+经济增加值简介以及评述.doc
- 2025年版汽车趋势报告 The 2025 EPA Automotive Trends Report.docx
- 2026年边缘计算开源平台EdgeX Foundry入门与二次开发.docx
- 2026年超声内镜放大内镜早癌诊断AI辅助识别系统临床评价.docx
- 2026年报废汽车回收与再制造逆向物流体系.docx
- 2026年产品碳足迹核算方法学:从摇篮到大门与从摇篮到坟墓.docx
- 2026年城乡要素平等交换双向流动政策创新试点申报材料.docx
- 2026年超导半导体接口电路架构与电平转换驱动器设计.docx
- 2026年财政贴息不再以再贷款支持为前提后的风险防范与合规要点.docx
- 2026年不动产信托登记试点政策对遗嘱信托支持.docx
- 2026年城乡有机废弃物协同处理技术方案.docx
原创力文档

文档评论(0)