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 | 导致短传输,短传输通常会发送一个短