最終更新:2014-05-12 (月) 16:20:49 (3630d)  

usb_submit_urb
Top / usb_submit_urb

issue an asynchronous transfer request for an endpoint

  • int usb_submit_urb(struct urb *urb, gfp_t mem_flags)

実装

呼び出し

メモ

  • URBの制御をUSBコアに転送するusb_submit_urbの呼び出しに成功すると、関数は0を返します。失敗した場合は、負のエラー番号を返します。関数が正常終了した場合、URBの処理が完了したときに、そのURBの (関数ポインタcompleteで指定される)完了ハンドラが1回だけ呼び出されます。この関数が呼び出されたときにはUSBコアはURBの処理を完了しており、URBの制御はデバイスドライバに返されます。URBの処理が完了して、関数completeが呼び出されるのは、次の3つの場合です。
    • URBが正常にデバイスに送られ、デバイスは適切な応答を返した。送信URBの場合はデータが正常に送られて、受信URBの場合はデータの受信に成功しています。この状況では、URBの変数statusが0にセットされます。
  • デバイスとの間のデータの送受信で、ある種のエラーが発生した。URB構造体の変数statusがエラー値を示すのでわかります。
  • URBがUSBコアによって「アンリンク」された。 ドライバがusb_unlink_urb?usb_kill_urb?を呼び出して、USBコアに送信したURBをキャンセルするよう通知したとき、または、URBが送信されているにもかかわらずデバイスがシステムから削除されたときに、この状況になります。