<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 2.6.?預備知識 我們正在接近去看一些實際的模塊代碼. 但是首先, 我們需要看一些需要出現在你的模塊源碼文件中的東西. 內核是一個獨特的環境, 它將它的要求強加于要和它接口的代碼上. 大部分內核代碼包含了許多數量的頭文件來獲得函數, 數據結構和變量的定義. 我們將在碰到它們時檢查這些文件, 但是有幾個文件對模塊是特殊的, 必須出現在每一個可加載模塊中. 因此, 幾乎所有模塊代碼都有下面內容: ~~~ #include <linux/module.h> #include <linux/init.h> ~~~ moudle.h 包含了大量加載模塊需要的函數和符號的定義. 你需要 init.h 來指定你的初始化和清理函數, 如我們在上面的 "hello world" 例子里見到的, 這個我們在下一節中再講. 大部分模塊還包含 moudleparam.h, 使得可以在模塊加載時傳遞參數給模塊. 我們將很快遇到. 不是嚴格要求的, 但是你的模塊確實應當指定它的代碼使用哪個許可. 做到這一點只需包含一行 MODULE_LICENSE: ~~~ MODULE_LICENSE("GPL"); ~~~ 內核認識的特定許可有, "GPL"( 適用 GNU 通用公共許可的任何版本 ), "GPL v2"( 只適用 GPL 版本 2 ), "GPL and additional rights", "Dual BSD/GPL", "Dual MPL/GPL", 和 "Proprietary". 除非你的模塊明確標識是在內核認識的一個自由許可下, 否則就假定它是私有的, 內核在模塊加載時被"弄污濁"了. 象我們在第 1 章"許可條款"中提到的, 內核開發者不會熱心幫助在加載了私有模塊后遇到問題的用戶. 可以在模塊中包含的其他描述性定義有 MODULE_AUTHOR ( 聲明誰編寫了模塊 ), MODULE_DESCRIPION( 一個人可讀的關于模塊做什么的聲明 ), MODULE_VERSION ( 一個代碼修訂版本號; 看 <linux/module.h> 的注釋以便知道創建版本字串使用的慣例), MODULE_ALIAS ( 模塊為人所知的另一個名子 ), 以及 MODULE_DEVICE_TABLE ( 來告知用戶空間, 模塊支持那些設備 ). 我們會討論 MODULE_ALIAS 在第 11 章以及 MUDULE_DEVICE_TABLE 在第 12 章. 各種 MODULE_ 聲明可以出現在你的源碼文件的任何函數之外的地方. 但是, 一個內核代碼中相對近期的慣例是把這些聲明放在文件末尾.
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看