Chinaunix首页 | 论坛 | 博客
  • 博客访问: 157157
  • 博文数量: 34
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 374
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-30 10:46
文章分类

全部博文(34)

文章存档

2018年(5)

2015年(13)

2014年(13)

2013年(3)

我的朋友

分类: 嵌入式

2015-06-12 17:12:36



1、USB core从USB子系统的初始化开始,我们也需要从那里开始,usb子系统初始化文件 drivers/usb/core/usb.c

usb子系统模块初始化及退出 函数接口:
subsys_initcall(usb_init);  //------ usb_init是我们真正的初始化函数,  subsys_initcall --- 子系统初始化宏,作用同 module_init差不多。
module_exit(usb_exit);   // ------ usb_exit usb子系统结束时的清理函数

static int __init usb_init(void)  // __init 表明这个函数仅在初始化期间使用,在模块被装载之后,它占用的资源就会释放掉用作它处
{                                        // __init 在 include/linux/init.h 中定义:#define __init __section(.init.text) __cold notrace
int retval;                            // subsys_initcall  module_init 等也是在 include/linux/init.h中定义
if (nousb) {
pr_info("%s: USB support disabled\n", usbcore_name);
return 0;
}
usb_init_pool_max();


retval = usb_debugfs_init();
if (retval)
goto out;


usb_acpi_register();
retval = bus_register(&usb_bus_type);
if (retval)
goto bus_register_failed;
retval = bus_register_notifier(&usb_bus_type, &usb_bus_nb);
if (retval)
goto bus_notifier_failed;
retval = usb_major_init();
if (retval)
goto major_init_failed;
retval = usb_register(&usbfs_driver);
if (retval)
goto driver_register_failed;
retval = usb_devio_init();
if (retval)
goto usb_devio_init_failed;
retval = usb_hub_init();
if (retval)
goto hub_init_failed;
retval = usb_register_device_driver(&usb_generic_driver, THIS_MODULE);
if (!retval)
goto out;


usb_hub_cleanup();
hub_init_failed:
usb_devio_cleanup();
usb_devio_init_failed:
usb_deregister(&usbfs_driver);
driver_register_failed:
usb_major_cleanup();
major_init_failed:
bus_unregister_notifier(&usb_bus_type, &usb_bus_nb);
bus_notifier_failed:
bus_unregister(&usb_bus_type);
bus_register_failed:
usb_acpi_unregister();
usb_debugfs_cleanup();
out:
return retval;
}

note:/init/main.c 为kernel第一个c语言文件,kernel c语言入口函数 asmlinkage __visible void __init start_kernel(void)
 do_initcalls()函数调用所有被定义连接在 initcalls 代码段的函数。

http://blog.csdn.net/fudan_abc/article/details/1793872
阅读(1819) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~