国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
linux2.4和linux2.6模塊參數(shù)的比較(兩個(gè)版本驅(qū)動(dòng)移植),Linux技術(shù)文章,Linux系列教程,Linux


1.linux-2.4內(nèi)核
 
1. 1 MODULE_PARM (變量名, 描述變量的字符串(也就是變量類型)
如:
 

int skull_ival=0;
char *skull_sval;
MODULE_PARM (ival, "i");
MODULE_PARM (sval, "s");


 
又如:至少有兩個(gè)元素、至多不超過4 個(gè)元素的數(shù)組可定義為:

int skull_array[4];
MODULE_PARM (skull_array, "2-4i");

描述變量的字符串(也就是變量類型, 也就是模塊參數(shù))目前只支持五種類型:

  • b:byte
  • h:short
  • i : int
  • l : long
  • s : string

    如果是字符串值,則需要聲明一個(gè)指針變量。

    // 示例代碼

    #include <linux/module.h>
    #include <linux/kernel.h>

    static int onevalue = 1;
    static char *twostring = NULL;

    MODULE_PARM (onevalue, "i");
    MODULE_PARM (twostring, "s");

    int __init test_init(void)
    {
            printk ("Hello world!\n onevalue=%d, twostring=%s\n", onevalue, twostring);
            return 0;
    }

    void __exit test_exit(void)
    {
            printk ("Goodbye world\n");
    }

    module_init(test_init);
    module_exit(test_exit);


    1.2 MODULE_PARM_DESC(變量名, 描述性信息)

    這段描述存儲(chǔ)在目標(biāo)文件中,能夠用類似 objdump 的工具查看,也可用自動(dòng)的系統(tǒng)管理工具來顯示。
    例如:

    int base_port = 0x300;
    MODULE_PARM (base_port, "i");
    MODULE_PARM_DESC (base_port, "The base I/O port (default 0x300)");

    1.3 MODULE_AUTHOR(name)
    將模塊作者名加入目標(biāo)文件

    1.4 MODULE_DESCRIPTION(desc)
    在目標(biāo)文件中增加模塊描述文字

    1.5 MODULE_SUPPORTED_EDVICE(dev)
    描述模塊所支持的設(shè)備。內(nèi)核中的注釋指明這個(gè)參數(shù)可能最終用來幫助模塊自動(dòng)裝載,然而目前還沒有起到這種作用


    2.linux-2.6內(nèi)核
    2.1 module_param (變量名, 變量類型, 使用屬性)
    2.6內(nèi)核
    不再采用2.4內(nèi)核中的字符串形式,而且在模塊編譯時(shí)會(huì)將此處申明的變量類型與變量定義的類型進(jìn)行比較,判斷是否一致。而且必須顯式包含#include linux/moduleparam.h>

    變量類型可以是

    • short: short
    • ushort: unsigned short
    • int: int
    • unit: unsigned int
    • long: long
    • ulong:unsigned long
    • charp: char*
    • bool: int
    • invbool: int
    • intarray: int*

    使用屬性
    除了特殊情況,通常把文件結(jié)點(diǎn)屬性指定為 0。該參數(shù)用來設(shè)置用戶的訪問權(quán)限,普通用戶能在內(nèi)核上加載模塊的幾率很少。如果一定要設(shè)置結(jié)點(diǎn),可用文件權(quán)限 (permission) 等概念指定 0644 等八進(jìn)制數(shù)。

    2.2 module_param_array(變量名1, 變量類型, 指向變量2(指定前面變量1的個(gè)數(shù))的指針(2.6.10可以直接用變量), 使用屬性)

    //示例代碼

    #include linux/module.h>
    #include linux/init.h>
    #include linux/moduleparam.h>
    #include linux/stat.h>
    #define SIZE 10
    static int a[SIZE], n;
    static int onevalue = 1;
    static char *twostring = NULL;

    module_param (onevalue, int, 0);
    module_param (twostring, charp, 0);
    module_param_array(a, int, &n, S_IRUGO);
    static int __init test_init(void)
    {
            int i;
            for (i = 0; i < n; ++i)
                    printk(KERN_ALERT "%d\n", a[i]);
            printk ("Hello, world!\n onevalue=%d, twostring=%s\n", onevalue, twostring);
            return 0;
    }
    static void __exit test_exit(void)
    {
            printk ("Goodbye, world\n");
            return;
    }
    MODULE_LICENSE("GPL");
    module_init(test_init);
    module_exit(test_exit);

    2.3 其他

    module_param_call(name, set, get, arg, perm)
    module_param_named(name, value, type, perm)

    3.同時(shí)適用于2.4與2.6內(nèi)核的模塊參數(shù)模板

    //適用于2.4與2.6內(nèi)核的模塊參數(shù)模板

    #include linux/module.h>
    #include linux/init.h>
    #ifdef LINUX26
    #include <linux/moduleparam.h>
    #endif
    #include linux/stat.h>
    #define SIZE 10
    static int a[SIZE];
    static int onevalue = 1;
    static char *twostring = NULL;
    #ifdef LINUX26
    static int n;

    module_param (onevalue, int, 0);
    module_param (twostring, charp, 0);
    #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 10)
    module_param_array(a, int, &n, S_IRUGO);
    #else
    module_param_array(a, int, &n, S_IRUGO);
    #endif
    #else
    MODULE_PARM (onevalue, "i");
    MODULE_PARM (twostring, "s");
    #endif



    4.參考資料
    1) module_param_array()用法(作者:@sky)
    2) 模塊參數(shù)|內(nèi)核變量(作者:beyes);
    3) Linux2.6內(nèi)核驅(qū)動(dòng)移植參考(與低版本比較, 作者:jimigaga);
    4) 從 2.4 到 2.6:Linux 內(nèi)核可裝載模塊機(jī)制的改變對(duì)設(shè)備驅(qū)動(dòng)的影響(作者:周婷)。
  • 本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
    打開APP,閱讀全文并永久保存 查看更多類似文章
    猜你喜歡
    類似文章
    module
    給內(nèi)核模塊傳遞參數(shù)
    內(nèi)核模塊指定參數(shù)方式
    ldd3之模塊學(xué)習(xí)總結(jié)(頁 1) - 文檔專區(qū) - 無分類文檔 - Linux論壇 - p...
    Linux USB驅(qū)動(dòng)框架分析-Linux -華夏名網(wǎng)資訊中心 虛擬主機(jī),域名注冊(cè),雙線虛擬主機(jī),服務(wù)器租賃,為7萬用戶提供服務(wù)
    編寫簡(jiǎn)單的Linux2.6內(nèi)核模塊(1)
    更多類似文章 >>
    生活服務(wù)
    分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
    綁定賬號(hào)成功
    后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
    如果VIP功能使用有故障,
    可點(diǎn)擊這里聯(lián)系客服!

    聯(lián)系客服