美文网首页
kernel第一个模块

kernel第一个模块

作者: only_cherry | 来源:发表于2018-07-24 00:06 被阅读0次

    一、 编写第一个模块例子

    $>vim mod_test01.c

    #include <linux/module.h>
    //模块的入口函数,在insmod时调用
    static int __init my_init(void)
    {
    printk("hello kernel\n");//显示信息
    
    return 0;//成功返回0,失败返回负数
    }
    //模块出口函数,在rmmod时调用
    static void __exit my_exit(void)
    {
      printk("Bye,kernel\n");
    }
    module_init(my_init);
    module_exit(my_exit);
    MODULE_AUTHOR("LFJ");
    MODULE_LICENSE("GPL");
    

    $>vim Makefile

    KERNEL := /usr/src/linux-headers-`uname -r`/
    obj-m := mod_test01.o
    myko := mod_test01.ko
    all:
      make -C $(KERNEL) M=`pwd` modules
    
    clean:
      make -C $(KERNEL) M=`pwd` clean
    

    1、在pc上进行安装并测试;

    2、注意:linux内核源码的路径中,可以包含中文,但是一定不能有空格

    3、编译模块

    $>make

    二、模块的相关命令:

    1.模块加载

    sudo insmod mod_test01.ko
    

    安装模块后,默认调用模块入口函数

    2.查看内核信息

    显示printk的信息

    dmesg
    

    清除printk的缓存区

    sudo dmesg -c
    

    3.卸载模块
    sudo rmmod mod_test01
    4.显示模块信息
    modinfo mod_test01.ko
    5.列出内核中已经加载的模块
    lsmod

    相关文章

      网友评论

          本文标题:kernel第一个模块

          本文链接:https://www.haomeiwen.com/subject/ndpsmftx.html