W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
我們正在接近去看一些實際的模塊代碼. 但是首先, 我們需要看一些需要出現(xiàn)在你的模塊源碼文件中的東西. 內(nèi)核是一個獨特的環(huán)境, 它將它的要求強加于要和它接口的代碼上.
大部分內(nèi)核代碼包含了許多數(shù)量的頭文件來獲得函數(shù), 數(shù)據(jù)結(jié)構和變量的定義. 我們將在碰到它們時檢查這些文件, 但是有幾個文件對模塊是特殊的, 必須出現(xiàn)在每一個可加載模塊中. 因此, 幾乎所有模塊代碼都有下面內(nèi)容:
#include <linux/module.h>
#include <linux/init.h>
moudle.h 包含了大量加載模塊需要的函數(shù)和符號的定義. 你需要 init.h 來指定你的初始化和清理函數(shù), 如我們在上面的 "hello world" 例子里見到的, 這個我們在下一節(jié)中再講. 大部分模塊還包含 moudleparam.h, 使得可以在模塊加載時傳遞參數(shù)給模塊. 我們將很快遇到.
不是嚴格要求的, 但是你的模塊確實應當指定它的代碼使用哪個許可. 做到這一點只需包含一行 MODULE_LICENSE:
MODULE_LICENSE("GPL");
內(nèi)核認識的特定許可有, "GPL"( 適用 GNU 通用公共許可的任何版本 ), "GPL v2"( 只適用 GPL 版本 2 ), "GPL and additional rights", "Dual BSD/GPL", "Dual MPL/GPL", 和 "Proprietary". 除非你的模塊明確標識是在內(nèi)核認識的一個自由許可下, 否則就假定它是私有的, 內(nèi)核在模塊加載時被"弄污濁"了. 象我們在第 1 章"許可條款"中提到的, 內(nèi)核開發(fā)者不會熱心幫助在加載了私有模塊后遇到問題的用戶.
可以在模塊中包含的其他描述性定義有 MODULE_AUTHOR ( 聲明誰編寫了模塊 ), MODULE_DESCRIPION( 一個人可讀的關于模塊做什么的聲明 ), MODULE_VERSION ( 一個代碼修訂版本號; 看 <linux/module.h> 的注釋以便知道創(chuàng)建版本字串使用的慣例), MODULE_ALIAS ( 模塊為人所知的另一個名子 ), 以及 MODULE_DEVICE_TABLE ( 來告知用戶空間, 模塊支持那些設備 ). 我們會討論 MODULE_ALIAS 在第 11 章以及 MUDULE_DEVICE_TABLE 在第 12 章.
各種 MODULE_ 聲明可以出現(xiàn)在你的源碼文件的任何函數(shù)之外的地方. 但是, 一個內(nèi)核代碼中相對近期的慣例是把這些聲明放在文件末尾.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: