ddk高级主题和提示
#高級主題和提示
本文檔是[Driver Development Kit教程](ddk-tutorial.md)文檔的一部分。
##需要很長時間才能初始化
如果您的設備需要很長時間才能初始化,該怎么辦?
當我們討論上面的** null_bind()**函數時,我們成功返回告訴設備管理器驅動程序現在與設備關聯了。
我們不能在bind函數上花費很多時間;我們基本上應該初始化我們的設備,發布它,并完成。
但您的設備可能需要執行冗長的初始化操作,例如:
*枚舉硬件點
*加載固件
*協商協議
等等,這可能需要很長時間才能完成。
您可以使用`DEVICE_ADD_INVISIBLE`標志將設備發布為“不可見”。
這符合綁定功能的要求,但沒有人能夠使用你的設備(因為沒有人知道它,因為它不可見)。
現在,您的設備可以通過后臺線程執行長時間操作。
當您的設備準備好為客戶端請求提供服務時,請調用** device_make_visible()**,這將導致它出現在路徑名空間中。
###省電
您的設備為了支持電源或其他資源節約功能可以使用兩個標注** suspend()**和** resume()**。
兩者都采用設備上下文指針和flags參數,但flags參數是僅用于suspend案例。
flags ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |含義
------------------------------------ ? ?| ------------------------------------------------------------
`DEVICE_SUSPEND_FLAG_REBOOT` ? ? ? ? ? ?|驅動程序應自行關閉以準備重啟或關閉機器
`DEVICE_SUSPEND_FLAG_REBOOT_BOOTLOADER` | ?
`DEVICE_SUSPEND_FLAG_REBOOT_RECOVERY` ? | ?
`DEVICE_SUSPEND_FLAG_POWEROFF` ? ? ? ? ?|驅動應該自行關閉以準備斷電
`DEVICE_SUSPEND_FLAG_MEXEC` ? ? ? ? ? ? | @@@幾乎沒有人使用它除了圖形控制器,它做什么? @@@
`DEVICE_SUSPEND_FLAG_SUSPEND_RAM` ? ? ? | 驅動程序應該做好安排,以便可以從RAM重新啟動它
> @@@是的,我只是猜測flags;它們用得那么少......
出于文檔目的,我應該寫什么?
他們只是提示,或者你必須*因為給定的flags而做某事,或者......?
##參考:支持函數
本節列出了供驅動程序使用的支持函數。
### Accessor功能
作為驅動程序協議函數的第一個參數傳遞的上下文塊是一種不透明的數據結構。
這意味著為了訪問數據元素,您需要調用一個訪問器函數:
Function ? ? ? ? ? ? ? ? ? |目的
------------------------ ? | ------------------------- ------------------
** device_get_name()** ? |檢索設備的名稱
** device_get_parent()** |檢索設備的父設備
###管理職能
以下功能用于管理設備:
Function ? ? ? ? ? ? ? ? ? ? |目的
---------------------------- | --------------------- ----------------------
** device_add()** ? ? ? ? ?|將設備添加到父設備
** device_make_visible()** |使設備可見
** device_remove()** ? ? ? |從父級中刪除設備
###信號
以下函數用于設置設備的狀態:
Function ? ? ? ? ? ? ? ? ?|目的
------------------------ ?| ------------------------- ------------------
** device_state_set()** |設置設備上的給定信號
** device_state_clr()** |清除設備上的給定信號
我們在上面的`/dev/misc/demo-fifo`處理程序中看到了這些。
@@@Notes only@@@
這部分非常適合open_at(),討論緩沖區管理,線程,最佳實踐,device_add()的高級選項等。
我認為它可以介于手冊頁之間(“printf用于打印字符串并采用以下參數“)和應用筆記—我想看看如何使用函數的例子,參數意味著什么,各種設計決定的影響是什么,那種事。
總結
以上是生活随笔為你收集整理的ddk高级主题和提示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (时间篇)关于时间的思考
- 下一篇: 开源App动画Lottie