Linux USB subsystem --- USB File System initialize

本文详细解析了Linux USB子系统中USB文件系统的初始化过程,包括配置检查、函数调用及目录创建等关键步骤。重点阐述了在不同配置下函数的行为差异,并展示了如何通过注册文件系统和通知链来实现USB设备的动态管理和状态更新。

[Linux 3.2] [driver/usb/core/inode.c]

函数:usbfs_init()
USB文件系统的初始化取决于是否CONFIG_USB_DEVICEFS. (make menuconfig ---> Device Drivers ---> USB support --->  USB device filesystem (DEPRECATED))

如果没有配置CONFIG_USB_DEVICEFS, 则usbfs_init()为inline函数,直接return 0;

如果配置CONFIG_USB_DEVICEFS, 则代码如下:

 

  1. static int usbfs_notify(struct notifier_block *self, unsigned long action, void *dev)  
  2. {  
  3.     switch (action) {  
  4.     case USB_DEVICE_ADD:  
  5.         usbfs_add_device(dev);  
  6.         break;  
  7.     case USB_DEVICE_REMOVE:  
  8.         usbfs_remove_device(dev);  
  9.         break;  
  10.     case USB_BUS_ADD:  
  11.         usbfs_add_bus(dev);  
  12.         break;  
  13.     case USB_BUS_REMOVE:  
  14.         usbfs_remove_bus(dev);  
  15.     }  
  16.   
  17.     usbfs_update_special();  
  18.     usbfs_conn_disc_event();  
  19.     return NOTIFY_OK;  
  20. }  
  21.   
  22. static struct notifier_block usbfs_nb = {  
  23.     .notifier_call =    usbfs_notify,  
  24. };  
  25.   
  26. /* --------------------------------------------------------------------- */  
  27.   
  28. static struct proc_dir_entry *usbdir = NULL;  
  29.   
  30. int __init usbfs_init(void)  
  31. {  
  32.     int retval;  
  33.   
  34.     retval = register_filesystem(&usb_fs_type);  
  35.     if (retval)  
  36.         return retval;  
  37.   
  38.     usb_register_notify(&usbfs_nb);  
  39.   
  40.     /* create mount point for usbfs */  
  41.     usbdir = proc_mkdir("bus/usb", NULL);  
  42.   
  43.     return 0;  
  44. }  


其主要作用:注册usb文件系统,注册一个usbfs_nb通知链,最后是在proc文件系统下面创建bus/usb目录。

进入/proc/bus/usb目录

# ls

001      002      devices

此devices的内容完全与usb debug文件系统里的devices文件一样。

001,代表usb总线1

002,代表usb总线2

注意:具体内容可以参见<Documentations/usb/proc_usb_info.txt>

 

问题:这些内容是如何产生的呢?

回答:见后面分析。


Microsoft Windows [版本 10.0.22631.2861] (c) Microsoft Corporation。保留所有权利。 C:\Users\Administrator>cd /d E:\AI_System\web_ui E:\AI_System\web_ui>cd /d E:\AI_System\web_ui E:\AI_System\web_ui>python server.py 2025-08-12 04:54:19 - CoreConfig - INFO - 加载环境变量... 2025-08-12 04:54:19 - CoreConfig - WARNING - 配置文件不存在: E:\AI_System\config\system_config.yaml 2025-08-12 04:54:19 - CoreConfig - INFO - 合并默认配置... 2025-08-12 04:54:19 - CoreConfig - INFO - 创建必要目录... 2025-08-12 04:54:19 - CoreConfig - INFO - 配置加载完成 | 条目数: 11 2025-08-12 04:54:19 - CoreConfig - INFO - [OK] 配置管理器初始化完成 | 环境前缀: AI_SYSTEM_ | 基础目录: E:\AI_System 2025-08-12 04:54:19,649 - CoreInit - INFO - Core module initialization started 2025-08-12 04:54:19,649 - EnvironmentManager - INFO - 环境管理器初始化完成 (基础目录: E:\AI_System\data\environment) 2025-08-12 04:54:19,649 - CoreInit - INFO - Environment manager created: DefaultEnvironment 2025-08-12 04:54:19,649 - CoreInit - INFO - Core module initialized successfully 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 日志系统初始化完成 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 日志系统初始化完成 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 日志级别: INFO 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 日志级别: INFO 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 日志文件: logs/web_server.log 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 日志文件: logs/web_server.log 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 系统初始化器创建, 基础目录: E:\AI_System 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 系统初始化器创建, 基础目录: E:\AI_System 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - ================================================== 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - ================================================== 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 开始初始化AI系统 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 开始初始化AI系统 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - ================================================== 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - ================================================== 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 添加路径: E:\AI_System\agent 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 添加路径: E:\AI_System\agent 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 添加路径: E:\AI_System\core 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 添加路径: E:\AI_System\core 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 添加路径: E:\AI_System\utils 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 添加路径: E:\AI_System\utils 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 添加路径: E:\AI_System\config 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 添加路径: E:\AI_System\config 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 添加路径: E:\AI_System\cognitive_arch 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 添加路径: E:\AI_System\cognitive_arch 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 添加路径: E:\AI_System\environment 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 添加路径: E:\AI_System\environment 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - AI核心初始化 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - AI核心初始化 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 硬件管理器初始化 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 硬件管理器初始化 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 生活调度器初始化 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 生活调度器初始化 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 开始初始化AI智能体 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 开始初始化AI智能体 2025-08-12 04:54:19 - WebServer - ERROR - 6396 - 6872 - 导入 AutonomousAgent 失败: No module named 'core.subsystem_registry' 2025-08-12 04:54:19 - WebServer - ERROR - 6396 - 6872 - 导入 AutonomousAgent 失败: No module named 'core.subsystem_registry' 2025-08-12 04:54:19 - WebServer - ERROR - 6396 - 6872 - Traceback (most recent call last): File "E:\AI_System\web_ui\server.py", line 460, in initialize_ai_agent from agent.autonomous_agent import AutonomousAgent File "E:\AI_System\agent\__init__.py", line 14, in <module> from .autonomous_agent import AutonomousAgent File "E:\AI_System\agent\autonomous_agent.py", line 24, in <module> from core.subsystem_registry import SubsystemRegistry ModuleNotFoundError: No module named 'core.subsystem_registry' 2025-08-12 04:54:19 - WebServer - ERROR - 6396 - 6872 - Traceback (most recent call last): File "E:\AI_System\web_ui\server.py", line 460, in initialize_ai_agent from agent.autonomous_agent import AutonomousAgent File "E:\AI_System\agent\__init__.py", line 14, in <module> from .autonomous_agent import AutonomousAgent File "E:\AI_System\agent\autonomous_agent.py", line 24, in <module> from core.subsystem_registry import SubsystemRegistry ModuleNotFoundError: No module named 'core.subsystem_registry' 2025-08-12 04:54:19 - WebServer - WARNING - 6396 - 6872 - 无法导入AutonomousAgent,使用模拟智能体 2025-08-12 04:54:19 - WebServer - WARNING - 6396 - 6872 - 无法导入AutonomousAgent,使用模拟智能体 2025-08-12 04:54:19 - WebServer - WARNING - 6396 - 6872 - 使用模拟智能体作为回退方案 2025-08-12 04:54:19 - WebServer - WARNING - 6396 - 6872 - 使用模拟智能体作为回退方案 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 环境管理器初始化成功 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 环境管理器初始化成功 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 环境管理器已启动 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 环境管理器已启动 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 环境管理器初始化成功 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 环境管理器初始化成功 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 进化监视器启动 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 进化监视器启动 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 所有系统组件初始化完成 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 所有系统组件初始化完成 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 开发服务器启动: http://0.0.0.0:5000 2025-08-12 04:54:19 - WebServer - INFO - 6396 - 6872 - 开发服务器启动: http://0.0.0.0:5000 * Serving Flask app 'server' * Debug mode: off
08-13
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值