先找到模块的入口和出口是哪个函数。
这个很简单,找到下面的代码,就一目了然了。
subsys_initcall(md_init);
module_exit(md_exit)
入口
static int __init md_init(void)
{
if (register_blkdev(MD_MAJOR, "md"))
return -1;
if ((mdp_major=register_blkdev(0, "mdp"))<=0) {
unregister_blkdev(MD_MAJOR, "md");
return -1;
}
blk_register_region(MKDEV(MD_MAJOR, 0), 1UL<<MINORBITS, THIS_MODULE,
md_probe, NULL, NULL);
blk_register_region(MKDEV(mdp_major, 0), 1UL<<MINORBITS, THIS_MODULE,
md_probe, NULL, NULL);
register_reboot_notifier(&md_notifier);
raid_table_header = register_sysctl_table(raid_root_table);
md_geninit();
return 0;
}
register_blkdev函数:用来注册一个新的块设备。
第一次用来注册主设备。其中"md”是设备名,宏MD_MAJOR的值是9,这个宏在"major.h"文件中有定义,代表第9号块设备。在Documentation/devices.txt文件中