【驱动】——模块参数

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

#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\n", name, age);
    for (i = 0; i < hobby_num; i++){
        printk("%d %s\n", 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
时间: 2024-08-08 01:27:20

【驱动】——模块参数的相关文章

insmod module_param 模块参数

模块参数 引导模块时,可以向它传递参数.要使用模块参数加载模块,这样写: insmod module.ko [param1=value param2=value ...] 为了使用这些参数的值,要在模块中声明变量来保存它们,并在所有函数之外的某个地方使用宏MODULE_PARM(variable, type) 和 MODULE_PARM_DESC(variable, description) 来接收它们.type参数应该是一个格式为 [min[-max]]{b,h,i,l,s} 字符串,其中 m

ansible软件模块参数

ansible-doc -l|wc -l1378 ansible 管理主机信息或者主机组信息 -m 模块名称 -a 相关模块参数 主机信息:远程主机IP地址 远程主机组名称 远程所有主机all -m 指定相应模块 -a 利用模块中某些参数功能 (一)命令类型模块: 第一个模块:command 官方参考链接:http://docs.ansible.com/ansible/latest/modules/command_module.html 参数:chdir---在执行某个命令前,先切换目录 [[e

Laravel5.2队列驱动expire参数设置带来的重复执行问题 数据库驱动

  'connections' => [     ....         'database' => [             'driver' => 'database',             'table' => 'jobs',             'queue' => 'default',             'expire' => 60,         ],         'redis' => [             'driver

python datetime模块参数详解

Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime.time模块,它提供 的接口与C标准库time.h基本一致.相比于time模块,datetime模块的接口则更直观.更容易调用. datetime模块定义了两个常量:datetime.MINYEAR和datetime.MAXYEAR,分别表示datetime所能表示的最 小.最大年份.其中,MINYEAR = 1,MAXYEAR = 9999. datetime模块定义了下面这几个类: datetim

Ansible之模块参数(一)

为了运行Ansible的第一个命令,我们前期做了大量的配置工作, 在controller主机和各个node主机上.为什么这么做,就是为了能够直接使用ansible,远程指挥一堆一堆的服务器,copy文件,安装软件包,更新软件,更改配置文件等等等等... 如果你查看了ansible官方文档,人家也是要让你从最最基础的命令开始,就像你学任何编程语言,第一个例子永远都是打印一句:hello world! 对于ansible而言,我查了一些教程,也听同事介绍过,那第一条命令就是ping.要想使用任何工具

python的requests模块参数详解

import requests print(dir(requests)) # 1.方法 # ['ConnectTimeout', 'ConnectionError', 'DependencyWarning', 'FileModeWarning', 'HTTPError', 'NullHandler', 'PreparedRequest', 'ReadTimeout', 'Request', 'RequestException', 'RequestsDependencyWarning', 'Res

开发智能语音机器人所需要的Freesiwtch VAD识别模块参数

在智能语音行业,软件机器人是现在大多数科技企业都所推崇的,特别是那些中小型企业,开发出这样一套设备不需要是相对来说能够承受的,对比智能音箱,智能手机产业,没有供应商的卡脖子和漫天要价,软件层面是这些中小型企业的首要选择. 人工智能呈现迅猛开展态势,其中语音智能电话机器人不断深入更多垂直范畴,高效的客户数据分类,提高意向客户的转化率,电话机器人轻松完成意向指标,更好契合了电销行业对于社会的需求.相较于大厂来说程序员只需要考虑电话机器人好不好用的问题,业务上面的衔接和处理并没有那么繁琐,相较于AI开

喜羊羊系列之【初级驱动--模块通信】

#include<linux/init.h> #include<linux/module.h> int add(int i,int j){ return i+j; } int sub(int i,int j){ return i-j; } EXPORT_SYMBOL(add); EXPORT_SYMBOL(sub); MODULE_LICENSE("GPL"); #include<linux/init.h> #include<linux/mod

requests模块参数介绍

调用关系 requests.get() requests.post() requests.put() requests.request('post') get请求 requests.get( url='xxx', params={'k1':'v1','nid':888} #get传参,在url上进行传参的 cookies={}, headers={}, ) # http://www.baidu.com?k1=v2andnid=888 # get 请求没有请求体,不能发data post请求 re