位置: 主页 > 网页游戏公益服 >

块设备驱动程序的网页游戏私服发布网编写驱动之用内存模拟磁盘

2.1 分配/设置队列: request_queue_t // 它提供读写能力

ret = q->make_request_fn(q, bio);

5. cd /; umount /tmp/

文件系统: vfat, ext2, ext3, yaffs2, jffs2 (把文件的读写转换为扇区的读写)

struct buffer_head *bh = bhs[i];

drivers\block\z2ram.c

1. insmod ramblock.ko

1、对块设备进行读写操作时可能不会立即响应,先放入队列一段时间后一起执行,如果想让读写操作立即执行可以运行:sync命令,即同步命令进行同步,此时会执行没有执行的相关操作。

// 如果合并不成,网页游戏私服推荐,使用bio构造请求

--------------------------------------------- 文件的读写

1. insmod ramblock.ko

// 调用队列的"处理函数"

2. 调用队列的处理函数(优化/调顺序/合并)后再执行

submit_bio(rw, bio);

drivers\block\xd.c

3. 注册: add_disk

2. 格式化: mkdosfs /dev/ramblock

sudo mount -o loop ramblock.bin /mnt

__generic_make_request(bio);

在开发板上:

add_request(q, req);

struct bio *bio; // 使用bh来构造bio (block input/output)

测试5th:

// 默认的函数是__make_request

app: open,read,write "1.txt"

for (i = 0; i < nr; i++) {

块设备驱动程序

硬件: 硬盘,flash

对于flash是有多少块,每块有多少扇区,每个扇区可以存多少字节

1. 分配gendisk: alloc_disk

---------------------------------------------

-----------------ll_rw_block----------------- 扇区的读写

注:

__generic_unplug_device(q);

// 执行队列

测试3th,4th:

// 先尝试合并

blk_init_queue

2、对于磁盘容量=磁头数*柱面数*扇区数*512,柱面数就是有多少环,每个扇区512字节

8. 在PC上查看ramblock.bin

参考:

4. 读写文件: cd /tmp, 在里面vi文件

3. fdisk /dev/ramblock

submit_bh(rw, bh);

1. 不像字符设备那样提供读写函数,而是把"读写"放入队列

块设备驱动程序的网页游戏私服发布网编写驱动之用内存模拟磁盘

3. 挂接: mount /dev/ramblock /tmp/

// 通用的构造请求: 使用bio来构造请求(request)

// 把请求放入队列

init_request_from_bio(req, bio);

q->request_fn(q);

7. cat /dev/ramblock > /mnt/ramblock.bin

2. ls /dev/ramblock*

2.2 设置gendisk其他信息 // 它提供属性: 比如容量

2. 设置

request_queue_t *q = bdev_get_queue(bio->bi_bdev); // 找到队列

// 调用队列的"构造请求函数"

怎么写块设备驱动程序呢?

6.再次挂接: mount /dev/ramblock /tmp/,后查看文件还依然存在

elv_merge(q, &req, bio);

__make_request

generic_make_request(bio);

分析ll_rw_block

热门文章
最新文章
Copyright © 2011-2018 超变态网页游戏 版权所有