zoukankan      html  css  js  c++  java
  • usb驱动之打印usb设备信息(一)

    1. 定义usb支持的设备类型:

    1 static const struct usb_device_id mouse_table[] = {
    2     { USB_INTERFACE_INFO(USB_INTERFACE_CLASS_HID, USB_INTERFACE_SUBCLASS_BOOT,
    3         USB_INTERFACE_PROTOCOL_MOUSE) },        /* mouse */
    4     { }/* Terminating entry */
    5 };

            当插入的USB设备为该类型的USB时,内核就会调用probe函数。注意要把这个数组写进设备表里面:

    MODULE_DEVICE_TABLE (usb, mouse_table);

    2. probe函数

    2.1 从接口获得设备,然后打印设备信息:

    struct usb_device *udev = interface_to_usbdev(interface);  //设备
          
    printk("VID = 0x%x,PID = 0x%x",udev->descriptor.idVendor,udev->descriptor.idProduct);

    2.2 在此之前定义结构体:

    static struct usb_driver usb_driver = {
        .name        = "mouse",
        .probe       = mouse_probe,
        .disconnect  = mouse_disconnect,
        .id_table    = mouse_table,
    };

    3. 将结构体注册进内核:

    3.1使用一句话:

    module_usb_driver(usb_driver);

    3.2 当然也可以使用万能模板module_init注册

     1 static int usb_drv_init(void)
     2 {
     3       usb_register(&usb_driver);
     4       return 0;
     5 }
     6 
     7 static void usb_drv_exit(void)
     8 {
     9       usb_deregister(&usb_driver);
    10 }
    11 
    12 module_init(usb_drv_init);
    13 module_exit(usb_drv_exit);

            

  • 相关阅读:
    模板
    CF1271E Common Number
    模板——长链剖分
    XJOI NOIP501/511训练22 ttt学字符串
    POJ 1151 Atlantis
    BZOJ 1014 [JSOI2008]火星人prefix
    Luogu P1856 [USACO5.5]矩形周长Picture
    CF716D Complete The Graph
    Luogu P2596 [ZJOI2006]书架
    HTML 学习之JavaScript作用域
  • 原文地址:https://www.cnblogs.com/zhu-g5may/p/9309356.html
Copyright © 2011-2022 走看看