一:
static int __init gpio_keys_init(void)
//入口函式裡面對平台裝置進行註冊,平台裝置內容為下面這個結構體
struct platform_driver gpio_keys_device_driver =
};
二: int platform_driver_register(struct platform_driver *drv)
三:struct bus_type platform_bus_type = ;
static int platform_match(struct device * dev, struct device_driver * drv)
//通過對名稱進行比較判斷
device.name
是否與drv.name
相同注釋:
在這裡struct platform_device定義為:
struct platform_device ;
注意,在這個結構體裡面包含了乙個叫device的結構體,可以將
struct platform_device稱為父結構體,將
struct device稱為子結構體。
在上述函式中,傳遞進來的dev指標將指向platform_device這個父結構體中的dev成員,而contianer_of這個巨集的作用則在於通過這個結構體成員的指標獲得其父結構體的指標,在這裡就是platform_device這一結構體的指標。
四: 通過比較後如果匹配就會呼叫gpio_keys_probe
函式進行下一步的操作。操作內容自定。
linux裝置驅動 輸入子系統
輸入裝置都能用輸入子系統來寫,比如說按鍵 觸控螢幕 滑鼠等,但是有的輸入裝置不止用到了輸入子系統,比如說usb輸入裝置,他們還用到了usb子系統。我們以最簡單的按鍵 直接接到cpu上 為例介紹一下輸入子系統。輸入子系統將硬體相關的 與軟體相關的 分開寫,目的是為了以後編寫修改 簡便。軟體部分系統已經...
Linux裝置驅動 input輸入子系統
不同的輸入裝置 如按鍵 鍵盤 觸控螢幕 滑鼠等 都有它們的差異性 如中斷 讀鍵值 座標值是裝置相關的 及共同性 如輸入事件的緩衝區管理以及字元裝置驅動的file operations介面則對輸入裝置是通用的 因此在linux核心中設計了input輸入子系統來完成輸入裝置之間的共性工作,而我們只需要使...
LINUX裝置驅動之輸入子系統 二
eric fang 2010 02 03 本站分析linux核心原始碼,版本號為2.6.32.3 二 input handler的註冊 在input device的註冊中存在下列疑問 1,匹配dev和handler時,input handler list上的handler是什麼時候掛上去的呢?2,匹...