misc驱动框架:
1.misc源码框架本身也是一个模块,这个模块的实现由misc.c文件实现,在内核启动时自动加载。
2.源码框架的主要工作:注册misc类,使用老接口注册字符设备驱动(主设备号10),开放device注册的接口misc_register给驱动工程师。
下面对misc.c也就是驱动框架的实现做分析:
1.加载的开始:
subsys_initcall(misc_init);
使用subsys_initcall()在内核加载的第四阶段对模块进行加载。
2.追踪分析misc驱动框架的建立:misc_init()函数
static int __init misc_init(void)
{
int err;
#ifdef CONFIG_PROC_FS
proc_create("misc", 0, NULL, &misc_proc_fops);
#endif
misc_class = class_create(THIS_MODULE, "misc");
err = PTR_ERR(misc_class);
if (IS_ERR(misc_class))
goto fail_remove;
err = -EIO;
if (register_chrdev(MISC_MAJOR,"misc",&misc_fops))
goto fail_printk;
misc_class->devnode = misc_devnode;
return 0;
fail_printk:
printk("unable to get major %d for mis