者:sam (甄峰)
sam在讀usb hiddriver時,看到quirks這部分內容。因為之前在看usb部分**時,常看到類似的內容,但對它的語義理解並不清楚,只是籠統地認為是乙個需要修正的東西。現在稍微研究一下。
一:quirks簡介:
quirks: 怪癖的意思,也就是說它某種特性與通常的usb裝置不相同。
sam之前是在usb部分看到quirks:
在~/drivers/usb/core/quirks.c中,有個usb_quirk_list列表,它其實就是乙個黑名單,描述了某個裝置有何種問題。例如:,
表明:vid=0x03f0,pid=0x4002的裝置(hewlett-packard photosmart720 ),不能自動suspend.
這個列表是不斷擴充套件的,不斷新增有問題的裝置上來。
則判斷乙個裝置是不是在這張黑名單上,然後如果是的,就判斷它具體是屬於哪種問題,
二:hidquirks:
sam在看usb hid driver時,在modulesinsmod時,會呼叫hid_init()。它又會呼叫usbhid_quirks_init()
如果在insmodmodules時,使用modules引數新增了quirks,格式為:quirks=pid:vid:quirks
則將此項內容新增或替換在動態建立的dquirks_list中。換句話說,也就是當modules的提供商知道自己的裝置會有什麼異常時,可以這樣使用。
注意:此處僅僅是將某種pid,vid的quirks新增進動態列表而已。
有動態黑名單,就有靜態黑名單。靜態黑名單在~/drivers/hid/usbhid/hid-quirks.c中--hid_blacklist。它描繪了已知所有的quirks.
三:如何使用hidquirks:
在hid裝置probe時,會呼叫usbhid_lookup_quirk(),它則分別呼叫usbhid_exists_dquirk(動態)——和usbhid_exists_squirk(靜態)在靜態黑名單和動態黑名單中尋找有沒有對應的vid和pid裝置。如果有,則將quirks紀錄在hid->quirks中。
Linux下Redis下安裝
redis安裝 檢查是否安裝redis ps ef grep redis2.檢查gcc服務是否安裝成功 rpm qa grep gcc注 安裝成功則顯示 mkdir redis5.解壓redis安裝包 tar zxvf redis 2.8.17 tar.gz c usr local redis 解壓...
Linux下程式設計
windows下我的環境為 windows10 vs2015 opencv3.4.0 opencv3.4.0 contrib python linux下我的環境為 ubuntu16004 也有ubuntu1804 opencv3.4.0 opencv3.4.0 contrib python gnu ...
linux下萬用字元
萬用字元是一類鍵盤字元,有星號 和問號 當查詢檔案呀資料夾時,可以使用它來代替乙個或多個真正字元 當不知道真正字元或者不想建入完整名字時,常常使用萬用字元代替乙個或多個真正字元。星號 可以使用星號代替0個或多個字元。如果正在查詢以aew開頭的乙個檔案,但不記得檔名其餘部分,可以輸入aew,查詢以ae...