Linux 内核完成 urb: 完成回调处理者
生活随笔
收集整理的這篇文章主要介紹了
Linux 内核完成 urb: 完成回调处理者
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
如果對 usb_submit_urb 的調(diào)用成功, 傳遞對 urb 的控制給 USB 核心, 這個(gè)函數(shù)返回 0; 否則, 一個(gè)負(fù)錯(cuò)誤值被返回. 如果函數(shù)成功, urb 的完成處理者(如同被完成函數(shù)指針指 定的)被確切地調(diào)用一次, 當(dāng) urb 被完成. 當(dāng)這個(gè)函數(shù)被調(diào)用, USB 核心完成這個(gè) urb, 并且對它的控制現(xiàn)在返回給設(shè)備驅(qū)動(dòng).
?
只有 3 個(gè)方法, 一個(gè) urb 可被結(jié)束并且使完成函數(shù)被調(diào)用:
?
- urb 被成功發(fā)送給設(shè)備, 并且設(shè)備返回正確的確認(rèn). 對于一個(gè) OUT urb, 數(shù)據(jù)被成 功發(fā)送, 對于一個(gè) IN urb, 請求的數(shù)據(jù)被成功收到. 如果發(fā)生這個(gè), urb 中的狀 態(tài)變量被設(shè)置為 0.
- 一些錯(cuò)誤連續(xù)發(fā)生, 當(dāng)發(fā)送或者接受數(shù)據(jù)從設(shè)備中. 被 urb 結(jié)構(gòu)中的 status 變 量中的錯(cuò)誤值所記錄.
- 這個(gè) urb 被從 USB 核心去鏈. 這發(fā)生在要么當(dāng)驅(qū)動(dòng)告知 USB 核心取消一個(gè)已提 交的 urb 通過調(diào)用 usb_unlink_urb 或者 usb_kill_urb, 要么當(dāng)設(shè)備從系統(tǒng)中去
除, 以及一個(gè) urb 已經(jīng)被提交給它.
?
一個(gè)如何測試在一個(gè) urb 完成調(diào)用中不同返回值的例子在本章稍后展示.
轉(zhuǎn)載于:https://www.cnblogs.com/fanweisheng/p/11147351.html
總結(jié)
以上是生活随笔為你收集整理的Linux 内核完成 urb: 完成回调处理者的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

- 上一篇: 用于构建集成式桌面应用程序的新指南和新工
- 下一篇: 助教总结