• ubuntu动态加载模块简单模板


    1:简单代码

    #include<linux/init.h>
    #include<linux/module.h>
    
    MODULE_LICENSE("GPL");
    MODULE_AUTHOR("jiuyueguang");
    MODULE_DESCRIPTION("SIMPLE MODULE DRIVER");
    
    static int hello_init(void){
        printk(KERN_INFO"hello word
    ");
        return 0;
    }
    static void hello_exit(void){
        printk(KERN_INFO"hello word exit
    ");
    }
    module_init(hello_init);
    module_exit(hello_exit);

    2:查看printk输出信息

     dmesg | tail 

    3:带参数类型的模块简单代码

    #include<linux/init.h>
    #include<linux/module.h>
    
    MODULE_LICENSE("GPL");
    MODULE_AUTHOR("jiuyueguang");
    MODULE_DESCRIPTION("SIMPLE MODULE DRIVER");
    
    static char *name="no name";
    static int age=0;
    
    static int hello_init(void){
        printk(KERN_INFO"hello word name=%s and age=%d
    ",name ,age);
        return 0;
    }
    static void hello_exit(void){
        printk(KERN_INFO"hello word exit name=%s and age=%d 
    ",name ,age);
    }
    module_init(hello_init);
    module_exit(hello_exit);
    module_param(name,charp,S_IRUGO);
    module_param(age,int,S_IRUGO);

    安装带参数的模块:

    sudo insmod hello_param.ko    

    安装的时候没有加参数,采用程序中的默认值输出:

    hello word name=no name and age=0

    安装的时候加参数:

    sudo insmod hello_param.ko name='jiuyueguang' age=25

    输出:

    hello word name=jiuyueguang and age=25

    4:我自己的Makefile

    ifeq ($(KERNELRELEASE),)
    KERNELDIR ?= /lib/modules/$(shell uname -r)/build 
    PWD := $(shell pwd)
    modules:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
    modules_install:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
    clean:
        rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions Module* module* a.out
    .PHONY: modules modules_install clean
    else
        obj-m := hello_param.o    //每次修改这里就够了
    endif
  • 相关阅读:
    【试水CAS-4.0.3】第07节_CASclient配置单点登录
    30分钟,让你彻底明白Promise原理
    【你离硅谷只差一步】网易中国创业家大赛项目火热征集中
    21分钟学会写编译器
    Android 模拟器下载、编译及调试
    GitLab 自动触发 Jenkins 构建
    微服务监控探索
    感觉要火!妹子实地采访网易猪厂程序员七夕怎么过
    延迟任务调度系统—技术选型与设计(下篇)
    使用QUIC
  • 原文地址:https://www.cnblogs.com/jiuyueguang/p/3186219.html
Copyright © 2020-2023  润新知