Linux那些事儿之我是Block层(3)驱动不过一出戏,内存申请为哪般?

720 struct gendisk *alloc_disk(int minors)

721 {

722 return alloc_disk_node(minors, -1);

723 }

724

725 struct gendisk *alloc_disk_node(int minors, int node_id)

726 {

727 struct gendisk *disk;

728

729 disk = kmalloc_node(sizeof(struct gendisk), GFP_KERNEL, node_id);

730 if (disk) {

731 memset(disk, 0, sizeof(struct gendisk));

732 if (!init_disk_stats(disk)) {

733 kfree(disk);

734 return NULL;

735 }

736 if (minors > 1) {

737 int size = (minors – 1) * sizeof(struct hd_struct *);

738 disk->part = kmalloc_node(size, GFP_KERNEL, node_id);

739 if (!disk->part) {

740 kfree(disk);

741 return NULL;

742 }

743 memset(disk->part, 0, size);

744 }

745 disk->minors = minors;

746 kobj_set_kset_s(disk,block_subsys);

747 kobject_init(&disk->kobj);

748 rand_initialize_disk(disk);

749 INIT_WORK(&disk->async_notify,

750 media_change_notify_thread);

751 }

752 return disk;

753 }

没有什么可留恋,只有抑制不住的梦想,

Linux那些事儿之我是Block层(3)驱动不过一出戏,内存申请为哪般?

相关文章:

你感兴趣的文章:

标签云: