Linux 驅動的基本框架主要由模塊加載函數,模塊卸載函數,模塊許可證聲明,模塊參數,塊導出符號,模塊作者信息等幾部分組成,其中模塊參數,模塊導出符號,模塊作者信息是選的部分,也就是可要可不要。剩余部分是必須有的。我們來看一下這幾個部分的作用: 1 模塊加載函數 當使用加載驅動模塊時,內核會執行模塊加載函數,完成模塊加載函數中的初始化工作。 2 模塊卸載函數 當卸載某模塊時,內核會執行模塊卸載函數,完成模塊卸載函數中的退出工作。 3 模塊許可證聲明 許可證聲明描述了內核模塊的許可權限,如果不聲明模塊許可,模塊在加載的時候,會收到“內核被污染(kernel tainted)”的警告。可接受的內核模塊聲明許可包括“GPL”“GPL v2”。 4 模塊參數(可選擇) 模塊參數是模塊被加載的時候可以傳遞給它的值。 5 模塊導出符號(可選擇) 內核模塊可以導出的符號,如果導出,其他模塊可以使用本模塊中的變量或函數。 6 模塊作者信息等說明(可選擇) 上一小節我們說,helloworld 驅動麻雀雖小五臟俱全,我們來分析 helloworld 驅動。通過helloworld 代碼再來看驅動框架。 (1)模塊加載函數: ![]() (2)模塊卸載函數: ![]() (3)模塊許可證聲明 ![]() (4)模塊作者信息 ![]() (5)頭文件 ![]() 通過上面的分析,helloworld 驅動是不是包含了驅動框架的所有必要的部分呢。因此helloworld 驅動我們可以看作是驅動代碼的模板。任何一個驅動代碼都用它作為基礎來編寫實現。同學們要將他記憶下來! |