每一个磁盘都有容量,所以在初始化gendisk的时候也需要设置其容量,使用函数set_capacity,函数原型如下: voidset_capacity(structgendisk*disk,sector_tsize) 函数参数和返回值含义如下: - disk: 设置容量的gendisk。 - size:盘容量大小,注意这里是扇区数量。块设备中最小的可寻址单元是扇区,一个扇区一般是512字节,...
不管物理设备的真实扇区大小是多少,内核与块设备驱动交互的扇区都以512字节为单位。因此,set_capacity()函数也以512字节为单位。 分区结构hd_struct代表了一个分区对象,它存储了一个硬盘的一个分区的信息,驱动程序初始化时,从硬盘的分区表中提取分区信息,存放在分区结构实例中。 3.块设备操作函数集结构 block_device...
xxx_disks->queue= xxx_queue;sprintf(xxx_disks->disk_name,"xxx%d", i); set_capacity(xxx_disks, xxx_size *2); add_disk(xxx_disks);/* 添加gendisk */return0; out_queue: unregister_blkdev(XXX_MAJOR,"xxx"); out:put_disk(xxx_disks); blk_cleanup_queue(xxx_queue); } 在块设备的卸载...
memblock_disk->fops = &memblock_fops;/*->4.2)设置queue成员,等于之前分配的申请队列*/memblock_disk->queue =memblock_request;/*->4.3)通过set_capacity()设置capacity成员,等于扇区数*/set_capacity(memblock_disk,BLOCKBUF_SIZE/SECTOR_SIZE);/*5)使用kzalloc()来获取缓存地址,用做扇区*/block_buf=kzalloc...
static inline void set_capacity(struct gendisk *disk, sector_t size); 设置gendisk结构体的扇区数(成员copacity), size等于扇区数 该函数内容如下: disk->capacity = size; 代码语言:javascript 复制 void add_disk(struct gendisk *gd); 向内核中注册gendisk结构体 代码语言:javascript 复制 void put_dis...
set_capacity(tiny4412_blkdev_disk,TINY4412_BLK_DEV_BYTES>>9); //添加磁盘信息到内核 add_disk(tiny4412_blkdev_disk); return 0; } static void __exit tiny4412_blkdev_exit(void) { //删除磁盘 del_gendisk(tiny4412_blkdev_disk); put_disk(tiny4412_blkdev_disk); ...
std::vector vector 瘦身 shrink_to_fit():将 capacity 减少为于 size() 相同的大小 td::forward_list forward_list 是单链表(std::list 是双链表),只需要顺序遍历的场合,forward_list 能更加节省内存,插入和删除的性能高于 list std::unordered_map、std::unordered_set用 hash 实现的无序的容器,插入、删除...
ramdisk.gendisk=alloc_disk(3);ramdisk.gendisk->major=ramdisk.major;ramdisk.gendisk->first_minor=0;ramdisk.gendisk->fops=&ramdisk_fops;ramdisk.gendisk->queue=ramdisk.queue;sprintf(ramdisk.gendisk->disk_name,"dx_ramdisk");set_capacity(ramdisk.gendisk,RAMDISK_SIZE/512);add_disk(ramdisk.gendisk...
*/set_capacity(tiny4412_blkdev_disk,TINY4412_BLK_DEV_BYTES>>9);//添加磁盘信息到内核add_disk(tiny4412_blkdev_disk);return0;}staticvoid__exittiny4412_blkdev_exit(void){//删除磁盘del_gendisk(tiny4412_blkdev_disk);put_disk(tiny4412_blkdev_disk);//清除队列blk_cleanup_queue(tiny4412_blkdev_qu...
VirtualMachineScaleSet.DefinitionStages.WithBillingProfile VirtualMachineScaleSet.DefinitionStages.WithBootDiagnostics VirtualMachineScaleSet.DefinitionStages.WithCapacity VirtualMachineScaleSet.DefinitionStages.WithComputerNamePrefix VirtualMachineScaleSet.DefinitionStages.WithCreate VirtualMachineScaleSet.DefinitionStages.Wi...