[国嵌攻略][139][输入子系统原理分析]
輸入子系統核心架構
1.設備驅動層
2.核心層
3.事件層
4.用戶空間
?
輸入設備注冊
1.拿設備ID去匹配handler的ID,找到對應的handler(事件處理者)
最常用的handler是evdev_handler,相應的匹配表在evdev_ids中。如果設備的ID在事件驅動的ID表中,那么兩者就匹配起來了。按鍵驅動在注冊的時候,沒有設定ID,所以是一個隨機值。在evdev_ids匹配表中能匹配所有的ID,所以按鍵驅動就和evdev_handler建立起了聯系。
2.調用handler的connect函數建立連接,創建設備文件。但是注冊字符設備是在核心子系統初始化的時候,并且只創建了一個字符設備。以后創建的多個設備文件都與這一個字符設備連接起來。
?
事件上報
1.當事件出現時,會找到handler中的event函數來處理
2.event函數主要做的事是打包input_event結構,保存到buffer
3.當用戶程序從設備文件中進行系統調用時,首先打開的是輸入子系統初始化時實現的file_operations,但是這個這個操作集里面只有open調用。在該調用中,原有的file_operations會被handler中的file_operations替換,這樣調用的就是匹配的handler的操作集合。然后把保存在buffer中的input_evnet結構交給用戶空間。
轉載于:https://www.cnblogs.com/d442130165/p/5269922.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的[国嵌攻略][139][输入子系统原理分析]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 客户端网页编程,第二章思维导图
- 下一篇: 【MongoDB】MongoDb的“no