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