• USB驱动中的usb_storage_usb_ids数组


    在看usb驱动时发现一个这样的结构体数组

    1 struct usb_device_id usb_storage_usb_ids[] = {
    2 # include "unusual_devs.h"
    3 { } /* Terminating entry */
    4 };

    其中结构体usb_device_id定义如下:

     1 struct usb_device_id {         
    2 /* which fields to match against? */
    3 __u16 match_flags;
    4
    5 /* Used for product specific matches; range is inclusive */
    6 __u16 idVendor;
    7 __u16 idProduct;
    8 __u16 bcdDevice_lo;
    9 __u16 bcdDevice_hi;
    10
    11 /* Used for device class matches */
    12 __u8 bDeviceClass;
    13 __u8 bDeviceSubClass;
    14 __u8 bDeviceProtocol;
    15
    16 /* Used for interface class matches */
    17 __u8 bInterfaceClass;
    18 __u8 bInterfaceSubClass;
    19 __u8 bInterfaceProtocol;
    20
    21 /* not matched against */
    22 kernel_ulong_t driver_info;
    23 };

    再查看unusual_devs.h文件,里面都一个个类似下面格式的宏替换,此文件包含了大多数usb设备的一些参数,(需要注意,最后的一个宏替换后面接着一个逗号,用于接数组后面的"{}")

    1 UNUSUAL_DEV(  0x12d1, 0x1439, 0x0000, 0x0000,
    2 "HUAWEI MOBILE",
    3 "Mass Storage",
    4 US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
    5 0)

    由此可知,这个数组的作用就是添加所有类型设备的参数,总线正是用它(这些参数)来匹配设备和驱动的,后面的一个空内容项{}应该是用来判断数组是否结束或者其它用途的。



  • 相关阅读:
    C#开发微信门户及应用(6)--微信门户菜单的管理操作
    C#开发微信门户及应用(5)--用户分组信息管理
    Django
    Django
    Django
    Django
    Django
    Django
    6.1
    Django
  • 原文地址:https://www.cnblogs.com/leon19870907/p/2181841.html
Copyright © 2020-2023  润新知