欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

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


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

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


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

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

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

  • 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(變量名, 描述性信息)

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

    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)
    將模塊作者名加入目標文件

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

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


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

    變量類(lèi)型可以是

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

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

    2.2 module_param_array(變量名1, 變量類(lèi)型, 指向變量2(指定前面變量1的個(gè)數)的指針(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內核的模塊參數模板

    //適用于2.4與2.6內核的模塊參數模板

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

    聯(lián)系客服

    欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久