|簡體中文

比思論壇

 找回密碼
 按這成為會員
搜索



查看: 496|回復: 0
打印 上一主題 下一主題

linux2.4与2.6下的模块编程对比

[複製鏈接]

86

主題

3

好友

542

積分

中學生

Rank: 3Rank: 3

  • TA的每日心情
    開心
    2024-5-9 21:05
  • 簽到天數: 1593 天

    [LV.Master]伴壇終老

    推廣值
    0
    貢獻值
    0
    金錢
    7167
    威望
    542
    主題
    86
    樓主
    發表於 2014-11-15 20:44:14
    linux2.4与2.6下的模块编程对比
    模块编程在2.4和2.6的kernel中的区别
    以hello world为例:
    2.4:
    ========================
    hello.c
    ========================
    /* How to compile:
    * gcc -I /usr/src/linux-2.4/include -DMODULE -D__KERNEL__ -c hello.c
    */
    #ifndef MODULE
    #define MODULE
    #endif
    #ifndef __KERNEL__
    #define __KERNEL__
    #endif
    #include
    #include  
    int init_module(void)
    {
    printk(KERN_ALERT "Hello World!\n");
    return 0; // Must return 0!
    }
    void cleanup_module(void)
    {
    printk(KERN_ALERT "Goodbye world!\n");
    }
    MODULE_LICENSE("GPL"); // Avoid "no license" warning.
    ========================
    Makefile
    ========================
    CC=gcc
    MODCFLAGS := -I /usr/src/linux-2.4/include -DMODULE -D__KERNEL__
    hello.o:hello.c
    $(CC) $(MODCFLAGS) -c hello.c
    .PHONY:clean
    clean:
    rm -f hello.o
    ========================
    # make
    # insmod hello.o
    # lsmod
    # rmmod hello
    注:2.4的模块编程中,MODULE和__KERNEL__这两个宏必须要定义,不管你是在编译时定义还是写在源文件里。我这里是两边都写了,不过加了保护,不会出现重复定义,也不会忘记定义。linux/kernel.h这个文件中,定义了KERN_ALERT这个宏,如果你直接改写成"",就可以不用包含这个头文件。而linux/module.h是模块编译必须的头文件,不可以省略。
    2.6:
    ========================
    hello.c
    ========================
    #include
    #include
    #include
    MODULE_LICENSE("Dual BSD/GPL");
    static char *whom = "world";
    module_param(whom, charp, 0);
    static int howmany = 1;
    module_param(howmany, int, 0);
    static int hello_init(void)
    {
    int i;
    for( i=0; i
    重要聲明:本論壇是以即時上載留言的方式運作,比思論壇對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,讀者及用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,讀者及用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本論壇受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者及用戶發現有留言出現問題,請聯絡我們比思論壇有權刪除任何留言及拒絕任何人士上載留言 (刪除前或不會作事先警告及通知 ),同時亦有不刪除留言的權利,如有任何爭議,管理員擁有最終的詮釋權。用戶切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。

    手機版| 廣告聯繫

    GMT+8, 2024-5-29 11:24 , Processed in 0.015020 second(s), 17 queries , Gzip On, Memcache On.

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回頂部