FreeBSD 系统中 USB 驱动开发详解
1. USB 传输机制
在 FreeBSD 系统里,USB 数据传输涉及到回调函数的执行,回调函数会在由类型、端点和方向所指定的端点进行数据传输前后被调用。其函数原型如下:
typedef void (usb_callback_t)(struct usb_xfer *, usb_error_t);其中,struct usb_xfer *包含了传输状态信息:
struct usb_xfer { ... uint8_t usb_state; /* Set when callback is executed before a data transfer. */ #define USB_ST_SETUP 0 /* Set when callback is executed after a data transfer. */ #define USB_ST_TRANSFERRED 1 /* Set when a transfer error occurs. */ #define USB_ST_ERROR 2 ... };下面是 USB 传输标志的详细说明:
| 标志 | 描述 |
| — | — |
| force_short_xfer | 引发短传输,短传输通常