编写设备驱动程序

分配和取消分配请求

请求以初始化的请求结构的形式实现。每种不同的端点类型接受不同类型的请求。每种类型的请求有不同的请求结构类型。下表显示了每种类型请求的结构类型。此表还列出了可用于分配和释放每种类型结构的函数。

表 20–1 请求初始化

管道或端点类型 

请求结构 

请求结构分配函数 

请求结构释放函数 

控制 

usb_ctrl_req_t(请参见 usb_ctrl_request(9S) 手册页)

usb_alloc_ctrl_req(9F)

usb_free_ctrl_req(9F)

批量传输 

usb_bulk_req_t(请参见 usb_bulk_request(9S) 手册页)

usb_alloc_bulk_req(9F)

usb_free_bulk_req(9F)

中断 

usb_intr_req_t(请参见 usb_intr_request(9S) 手册页)

usb_alloc_intr_req(9F)

usb_free_intr_req(9F)

等时 

usb_isoc_req_t(请参见 usb_isoc_request(9S) 手册页)

usb_alloc_isoc_req(9F)

usb_free_isoc_req(9F)

下表列出了可用于每种类型请求的传输函数。

表 20–2 请求传输设置

管道或端点类型 

传输函数 

控制 

usb_pipe_ctrl_xfer(9F)usb_pipe_ctrl_xfer_wait(9F)

批量传输 

usb_pipe_bulk_xfer(9F)

中断 

usb_pipe_intr_xfer(9F)usb_pipe_stop_intr_polling(9F)

等时 

usb_pipe_isoc_xfer(9F)usb_pipe_stop_isoc_polling(9F)

分配和取消分配请求的过程如下:

  1. 使用相应的分配函数为所需的请求类型分配请求结构。表 20–1 中列出了请求结构分配函数的手册页。

  2. 初始化结构中所需的任何字段。有关更多信息,请参见请求特性和字段或相应的请求结构手册页。表 20–1 中列出了请求结构的手册页。

  3. 完成数据传输时,使用相应的释放函数释放请求结构。表 20–1 中列出了请求结构释放函数的手册页。