linux内核USB相关数据结构

         本文主要是linux内核USB驱动相关数据结构的整理,方便阅读linux内核驱动相关代码的时候查阅


本文主要是linux内核USB驱动相关数据结构的整理,方便阅读linux内核驱动相关代码的时候查阅


usb_interface_descriptor结构体:


struct usb_interface_descriptor {  
    __u8  bLength;             // 描述符大小  
    __u8  bDescriptorType;  
  
    __u8  bInterfaceNumber;  
    __u8  bAlternateSetting;  
    __u8  bNumEndpoints;       // 端点数  
    __u8  bInterfaceClass;     // 接口类  
    __u8  bInterfaceSubClass;  // 接口子类  
    __u8  bInterfaceProtocol;  // 接口协议  
    __u8  iInterface;  
} __attribute__ ((packed)); 




struct usb_device 结构体,linux内核源码下面的可以找到(include/linux/usb.h)


/** 
* struct usb_device - kernel's representation of a USB device 
* @devnum: device number; address on a USB bus 
* @devpath: device ID string for use in messages (e.g., /port/...) 
* @route: tree topology hex string for use with xHCI 
* @state: device state: configured, not attached, etc. 
* @speed: device speed: high/full/low (or error) 
* @tt: Transaction Translator info; used with low/full speed dev, highspeed hub 
* @ttport: device port on that tt hub 
* @toggle: one bit for each endpoint, with ([0] = IN, [1] = OUT) endpoints 
* @parent: our hub, unless we're the root 
* @bus: bus we're part of 
* @ep0: endpoint 0 data (default control pipe) 
* @dev: generic device interface 
* @descriptor: USB device descriptor 
* @config: all of the device's configs 
* @actconfig: the active configuration 
* @ep_in: array of IN endpoints 
* @ep_out: array of OUT endpoints 
* @rawdescriptors: raw descriptors for each config 
* @bus_mA: Current available from the bus 
* @portnum: parent port number (origin 1) 
* @level: number of USB hub ancestors 
* @can_submit: URBs may be submitted 
* @persist_enabled:  USB_PERSIST enabled for this device 
* @have_langid: whether string_langid is valid 
* @authorized: policy has said we can use it; 
*     (user space) policy determines if we authorize this device to be 
*     used or not. By default, wired USB devices are authorized. 
*     WUSB devices are not, until we authorize them from user space. 
*     FIXME -- complete doc 
* @authenticated: Crypto authentication passed 
* @wusb: device is Wireless USB 
* @string_langid: language ID for strings 
* @product: iProduct string, if present (static) 
* @manufacturer: iManufacturer string, if present (static) 
* @serial: iSerialNumber string, if present (static) 
* @filelist: usbfs files that are open to this device 
* @usb_classdev: USB class device that was created for usbfs device 
*     access from userspace 
* @usbfs_dentry: usbfs dentry entry for the device 
* @maxchild: number of ports if hub 
* @children: child devices - USB devices that are attached to this hub 
* @quirks: quirks of the whole device 
* @urbnum: number of URBs submitted for the whole device 
* @active_duration: total time device is not suspended 
* @connect_time: time device was first connected 
* @do_remote_wakeup:  remote wakeup should be enabled 
* @reset_resume: needs reset instead of resume 
* @wusb_dev: if this is a Wireless USB device, link to the WUSB 
*     specific data for the device. 
* @slot_id: Slot ID assigned by xHCI 

* Notes: 
* Usbcore drivers should not set usbdev->state directly.  Instead use 
* usb_set_device_state(). 
*/  
struct usb_device {  
     int          devnum;             /*usb设备在总线上的编号*/  
     char          devpath[16];     
     u32          route;  
     enum usb_device_state     state;  
     enum usb_device_speed     speed;  
  
     struct usb_tt     *tt;  
     int          ttport;  
  
     unsigned int toggle[2];  
  
     struct usb_device *parent;  
     struct usb_bus *bus;  
     struct usb_host_endpoint ep0; /*端点0,特殊对待*/  
  
     struct device dev;  
  
     struct usb_device_descriptor descriptor;  
     struct usb_host_config *config;/*拥有的所有配置*/  
  
     struct usb_host_config *actconfig;/*当前激活的配置*/  
     struct usb_host_endpoint *ep_in[16];/*全速也最多使用15个端点*/  
     struct usb_host_endpoint *ep_out[16];  
  
     char **rawdescriptors;/*字符指针数组,每一项都指向GET_DESCRIPTOR请求获得配置描述符所得到到结果*/  
  
     unsigned short bus_mA;  
     u8 portnum;  
     u8 level;  
  
     unsigned can_submit:1;  
     unsigned persist_enabled:1;  
     unsigned have_langid:1;  
     unsigned authorized:1;  
     unsigned authenticated:1;  
     unsigned wusb:1;  
     int string_langid;  
  
     /* static strings from the device */  
     char *product;  
     char *manufacturer;  
     char *serial;  
  
     struct list_head filelist;  
#ifdef CONFIG_USB_DEVICE_CLASS  
     struct device *usb_classdev;  
#endif  
#ifdef CONFIG_USB_DEVICEFS  
     struct dentry *usbfs_dentry;  
#endif  
  
     int maxchild;  
     struct usb_device *children[USB_MAXCHILDREN];  
  
     u32 quirks;  
     atomic_t urbnum;  
  
     unsigned long active_duration;  
  
#ifdef CONFIG_PM  
     unsigned long connect_time;  
  
     unsigned do_remote_wakeup:1;  
     unsigned reset_resume:1;  
#endif  
     struct wusb_dev *wusb_dev;  
     int slot_id;  
}; 




在linux内核源码下面还可以找到如下结构体(include/linux/usb.h)
struct usb_device;
struct usb_driver;
struct usb_device_driver;
struct usb_class_driver;
struct urb;
struct usb_sg_request;
int usb_sg_init;
struct usb_host_endpoint;
struct usb_host_interface;
struct usb_interface;
struct usb_interface_cache;
struct usb_host_config;
struct usb_host_bos;
struct usb_devmap;
struct usb_bus;
struct usb2_lpm_parameters;
struct usb3_lpm_parameters;
struct usb_dynids;
struct usb_dynid;
struct usbdrv_wrap;
struct usb_iso_packet_descriptor;
struct usb_anchor;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值