歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Linux USB subsystem --- USB Debug File System Initialize

Linux USB subsystem --- USB Debug File System Initialize

日期:2017/3/1 10:25:42   编辑:Linux編程

目的:對USB作深入學習,在此留下筆記。歡迎討論。

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

首先來分析USB子系統初始化的第一個函數usb_debugfs_init()

  1. static int usb_debugfs_init(void)
  2. {
  3. usb_debug_root = debugfs_create_dir("usb", NULL);
  4. if (!usb_debug_root)
  5. return -ENOENT;
  6. usb_debug_devices = debugfs_create_file("devices", 0444,
  7. usb_debug_root, NULL,
  8. &usbfs_devices_fops);
  9. if (!usb_debug_devices) {
  10. debugfs_remove(usb_debug_root);
  11. usb_debug_root = NULL;
  12. return -ENOENT;
  13. }
  14. return 0;
  15. }

其主要作用就是在debug文件系統中創建一個usb目錄,然後在usb目錄下面創建一個devices的文件。

問題:創建的這些文件在那裡呢?

答案:存在於debug文件系統裡面。

問題:debug文件系統又在那裡呢?

答案:http://www.linuxidc.com/Linux/2012-03/57540.htm


下面假設debug文件系統已經被掛載到/sys/kernel/debug目錄裡。進入usb目錄,查看

# ls

devices ehci ohci

這個devices文件就是上面創建的。

注意:這個文件的內容和/proc/bus/usb/devices的內容是一致的。

# cat devices

---------------------------取其中一段----------------------------------

T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 3 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=0dd8 ProdID=f607 Rev=11.00
S: Manufacturer=Netac
S: Product=OnlyDisk
S: SerialNumber=AA04012700009721
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=31875us

----------------------------------------------------------------------------

這些信息都是什麼意思呢?具體參考:<Documentations/usb/proc_usb_info.txt>


問題:這些信息是從那裡來的呢?

回答:後續給出答案。

問題:devices文件中的ehci,ohci是如何加入的呢?

回答:後續給出答案。

http://www.linuxidc.com/Linux/2012-03/57535.htm

http://www.linuxidc.com/Linux/2012-03/57536.htm

http://www.linuxidc.com/Linux/2012-03/57537.htm

http://www.linuxidc.com/Linux/2012-03/57538.htm

http://www.linuxidc.com/Linux/2012-03/57539.htm

Copyright © Linux教程網 All Rights Reserved