zoukankan      html  css  js  c++  java
  • 【驱动】——模块参数

    本例一共三种类型模块参数——无符号整型,字符串,字符串数组

    #include <linux/init.h>
    #include <linux/module.h>
    #include <linux/moduleparam.h>
    #include <linux/kernel.h>
    
    #define ACCESS  (0644)
    
    static uint age = 24; 
    module_param(age, uint, ACCESS);
    
    static char *name = "netboy";
    module_param(name, charp, ACCESS);
    
    static char *hobby[10] = {"basketbal", "running"};
    static int hobby_num = 2;
    module_param_array(hobby, charp, &hobby_num, ACCESS);
    
    static int __init param_init(void){
        int i = 0;
    
        printk("my name is %s, my age is %u
    ", name, age);
        for (i = 0; i < hobby_num; i++){
            printk("%d %s
    ", i, hobby[i]);
        }   
    
        return 0;
    }
    
    static void __exit param_exit(void){
    
        printk("bye");
    }
    
    module_init(param_init);
    module_exit(param_exit);
    
    MODULE_AUTHOR("ngnetboy");
    MODULE_DESCRIPTION("kernel parms test!");
    MODULE_LICENSE("GPL");
    MODULE_VERSION("0.0.0.2");

    注:

    1:在使用 char * 类型的时候,一定要用 charp

    2:使用参数数组的时候  module_param_array(hobby, charp, &hobby_num, ACCESS);  hobby_num 会被设置为用户提供的值的个数。

    3:加载驱动命令: insmod my_project.ko name="netboy" age=25 hobby="shopping","playing","sleeping"

    相对应的Makefile

    ifeq ($(KERNELRELEASE), )
        KERNELDIR ?= /lib/modules/$(shell uname -r)/build   
        PWD := $(shell pwd)
    all: clean
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
        -rm -rf *.o *~ core .depend .*.cmd *.mod.c .tmp_versions Module.* Makefile.xen modules.order
    clean:
        -rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions Module.* Makefile.xen modules.order
    else
        obj-m := my_project.o
    endif
  • 相关阅读:
    订单管理 练习
    简单的表单校验例子
    简单的js表单验证框架
    js的正则表达式
    Part2-HttpClient官方教程-Chapter2-连接管理
    Java爬取网易云音乐民谣并导入Excel分析
    Java爬取网易云音乐民谣并导入Excel分析
    Part2-HttpClient官方教程-Chapter1-基础
    Part2-HttpClient官方教程-Chapter1-基础
    Part1-HttpClient快速入门案例
  • 原文地址:https://www.cnblogs.com/ngnetboy/p/4540803.html
Copyright © 2011-2022 走看看