linux驅動子系統之輸入子系統 5

2021-06-09 04:16:54 字數 738 閱讀 1066

5. 總結

5.1 事件資訊的上報過程分析

l  上報的大致過程:裝置驅動層->核心層->事件處理層->應用層

l  具體呼叫的函式(以evdev為例):input_event()->input_handle_event() ->input_pass_event() ->handle->handler->event(handle,type, code, value) ->evdev_event() ->evdev_pass_event() ,然後通過client->buffer[client->head++]= *event賦值給client(是struct evdev_client)

很奇怪,這不還是在核心空間,根本就沒傳遞到應用空間。別忘了事件驅動層還實現了乙個file_operations,我們先來看下evdev_read函式:

static ssize_t evdev_read(struct file *file, char __user *buffer,

size_t count, loff_t *ppos)

}看明白了吧,通過input_event_to_user()-> copy_to_user()把資訊傳遞到使用者空間。

5.2   input_dev、input_handler和input_handle三者的關係

l  input_dev、input_handler和input_handle關係圖:

linux驅動之輸入子系統

輸入子系統框架,把核心開啟 搜尋input.c 輸入子系統的 在 driver input目錄下面 最上一層,我們稱它為核心層 要看乙個驅動程式我們應該從他的入口函式開始看 有一行 err register chrdev region mkdev input major,0 input max ch...

linux輸入子系統之按鍵驅動

上一節中,我們講解了linux input子系統的框架,到核心原始碼裡詳細分析了輸入子系統的分離分層的框架等。這一節,我們來以輸入子系統的框架來寫乙個按鍵驅動。問 怎麼寫符合輸入子系統框架的驅動程式?答 1.分配乙個input dev結構體 2.設定 3.註冊 4.硬體相關的 比如在中斷服務程式裡上...

Linux驅動之input輸入子系統

input輸入子系統在實際專案中用的也比較多,按鍵,觸控螢幕,滑鼠,鍵盤等,用來實現核心層和應用層資料之間的傳遞,這裡得說明不只有input,還有copy to user等,利用input的好處是我們用自己上傳資料到應用程式,我們直接上報這個事件發生了,input自帶的機制會實現上傳的功能。還有很多...