codecamp

13.6. 快速参考

13.6. 快速参考

本节总结本章介绍的符号:

#include <linux/usb.h>

所有和 USB 相关的头文件. 它必须被所有的 USB 设备驱动包含.

struct usb_driver;

描述 USB 驱动的结构.

struct usb_device_id;   

描述这个驱动支持的 USB 设备的结构.

int usb_register(struct usb_driver *d);

用来从USB核心注册和注销一个 USB 驱动的函数.

struct usb_device *interface_to_usbdev(struct usb_interface *intf);

从 struct usb_interface 获取控制 struct usb_device *.

struct usb_device;

控制完整 USB 设备的结构.

struct usb_interface;

主 USB 设备结构, 所有的 USB 驱动用来和 USB 核心通讯的.

void usb_set_intfdata(struct usb_interface *intf, void *data);
void *usb_get_intfdata(struct usb_interface *intf);

设置和获取在 struct usb_interface 中的私有数据指针部分的函数.

struct usb_class_driver;

描述 USB 驱动的一个结构, 这个驱动要使用 USB 主编号来和用户空间程序通讯.

int usb_register_dev(struct usb_interface *intf, struct usb_class_driver *class_driver);
void usb_deregister_dev(struct usb_interface *intf, struct usb_class_driver *class_driver);

用来注册和注销一个特定 struct usb_interface * 结构到 struct usb_class_driver 结构的函数.

struct urb;

描述一个 USB 数据传输的结构.

struct urb *usb_alloc_urb(int iso_packets, int mem_flags);
void usb_free_urb(struct urb *urb);

用来创建和销毁一个 struct usb urb*的函数.

int usb_submit_urb(struct urb *urb, int mem_flags);
int usb_kill_urb(struct urb *urb);
int usb_unlink_urb(struct urb *urb);

用来启动和停止一个 USB 数据传输的函数.

void usb_fill_int_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe, void *transfer_buffer, int buffer_length, usb_complete_t complete, void *context, int interval);
void usb_fill_bulk_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe, void *transfer_buffer, int buffer_length, usb_complete_t complete, void *context);
void usb_fill_control_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe, unsigned char *setup_packet, void *transfer_buffer, int buffer_ length, usb_complete_t complete, void *context);

用来在被提交给 USB 核心之前初始化一个 struct urb 的函数.

int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe, void *data, int len, int *actual_length, int timeout);
int usb_control_msg(struct usb_device *dev, unsigned int pipe, __u8 request, __u8 requesttype, __u16 value, __u16 index, void *data, __u16 size, int timeout);

用来发送和接受 USB 数据的函数, 不必使用一个 struct urb.

13.5. 无 urb 的 USB 传送
14.1. Kobjects, Ksets 和 Subsystems
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }