當前位置:編程學習大全網 - 網站源碼 - URB處理流程 linux?

URB處理流程 linux?

URB參數是指向URB的指針,mem flags參數與傳遞給kmalloc ()函數參數的意義相同,它用於告知USB核心如何在此時分配內存緩沖區。

在提交URB到USB核心後,直到完成函數被調用之前,不要訪問URB中的任何成員。

usb_submit_urb ()在原子上下文和進程上下文中都可以被調用,mem_flags變量需根據調用環境進行相應的設置,如下所示。

·GFP_ATOMIC:在中斷處理函數、底半部、tasklet、定時器處理函數以及URB完成函數中,在調用者持有自旋鎖或者讀寫鎖時以及當驅動將current->state修改為非TASK_RUNNING時,應使用此標誌。

·GFP_NOIO:在存儲設備的塊IO和錯誤處理路徑中,應使用此標誌;

·GFP_KERNEL:如果沒有任何理由使用GFP_ATOMIC和GFP_NOIO,就使用GFP_KERNEL。

如果usb_submit_urb ()調用成功,即URB的控制權被移交給USB核心,該函數返回0;否則,返回錯誤號。

4)提交由USB核心指定的USB主機控制器驅動。

5)被USB主機控制器處理,進行壹次到USB設備的傳送。

第4)~5)步由USB核心和主機控制器完成,不受USB設備驅動的控制。

6)當URB完成,USB主機控制器驅動通知USB設備驅動。

  • 上一篇:用C++實現對軟件使用時間限制
  • 下一篇:雀巢強化劑有真假區別嗎
  • copyright 2024編程學習大全網