b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

struct hd_geometry_geometry dash_typedef struct

电脑杂谈  发布时间:2017-05-21 10:00:45  来源:网络整理

geometry dash_struct hd_geometry_typedef struct

用内存代替块设备的总结,相对来简单得多,对内存操作想必大家都很熟悉,直接分配一块内存就可以直接读写操作了

/* 参考:

* drivers\block\xd.c

* drivers\block\z2ram.c

*/

#define RAMBLOCK_SIZE (1024*1024)//一个扇区是512字节

static struct gendisk *ramblock_disk;

static struct request_queue *ramblock_queue;

static DEFINE_SPINLOCK(ramblock_lock);//定义一个自旋锁

static unsigned char *ramblock_buf;

static struct block_device_operations ramblock_fops = {//fops结构体,必须要。struct hd_geometrystruct hd_geometry

.owner= THIS_MODULE,

.getgeo= ramblock_getgeo,//设置heads /cylinders/sectors

};

static int ramblock_getgeo(struct block_device *bdev, struct hd_geometry *geo)

{

/* 容量=heads*cylinders*sectors*512 */

geo->heads = 2;//柱头

geo->cylinders = 32;//柱面

geo->sectors = RAMBLOCK_SIZE/2/32/512;//扇区

return 0;

}

static int ramblock_init(void)

{

/* 1. 分配一个gendisk结构体 */

ramblock_disk = alloc_disk(16); /* 次设备号个数: 分区个数+1 */

/* 2. 设置 */

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

ramblock_queue = blk_init_queue(do_ramblock_request, &ramblock_lock);//do_ramblock_request请求队列函数

ramblock_disk->queue = ramblock_queue;

/* 2.2 设置其他属性: 比如容量 */

struct hd_geometry_typedef struct_geometry dash

major = register_blkdev(0, "ramblock"); /* cat /proc/devices */

ramblock_disk->major = major;

ramblock_disk->first_minor = 0;

sprintf(ramblock_disk->disk_name, "ramblock");//把ramblock打印到ramblock_disk->disk_name

ramblock_disk->fops = &ramblock_fops;

set_capacity(ramblock_disk, RAMBLOCK_SIZE / 512);//设置容量

. 硬件相关操作 */

ramblock_buf = kzalloc(RAMBLOCK_SIZE, GFP_KERNEL);//分配一个读写缓冲区

/* 4. 注册 */

add_disk(ramblock_disk);

}

static void do_ramblock_request(struct request_queue * q)//当读写的时候调用这个函数


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-48359-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 辛延年
      辛延年

      当然来鬼城的难民是限制条件的

    • 游天杰
      游天杰

      我是卖假货起家的

    热点图片
    拼命载入中...