module_param 用于动态开启/关闭 驱动打印信息

1.定义模块参数的方法:

module_param(name, type, perm);

其中,name:表示参数的名字;      type:表示参数的类型;      perm:表示参数的访问权限;

type参数设定的类型和perm的访问权限具体数值数值请参考内核定义。

2、可以在insmod(装载模块)的时候为参数指定值,如果没有指定则使用默认值

static int num=10;
module_param(num,int,S_IRUGO);
static int hello_init(void)
{
    printk("Hello module init./n");
    printk("num=%d/n",num);
    return 0;
}
static void   hello_exit(void)
{
    printk("Goodbye module exit./n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("Dual BSD/GPL");MODULE_DESCRIPTION("a simple module");
MODULE_ALIAS("hello");

上面的num=10,则10是参数num的默认值。

保存为源文件hello.c, 编译生成hello.ko , 当我们使用insmod进行载入时, 使用

insmod hello.ko num=20

则可以 cat /sys/module/hello/parameters/num ,看到为 20

3、驱动的打印调试信息正常情况下我们并不希望看到,但是出现错误的情况下还是需要查看的,可使用以下方法:

static int num=0;
module_param(num,int,S_IRUGO);

/* 驱动运行中调用的操作 */
int fun_test()
{
    if(num)
    {
        printk("This is a test!\n");
    }
}

static int hello_init(void)
{
    printk("Hello module init./n");
    printk("num=%d/n",num);
    return 0;
}
static void   hello_exit(void)
{
    printk("Goodbye module exit./n");
}
module_init(hello_init);
module_exit(hello_exit);

MODULE_LICENSE("Dual BSD/GPL");
MODULE_DESCRIPTION("a simple module");
MODULE_ALIAS("hello");

默认运行中不会出现打印信息“This is a test”。

查看 /sys/modules/hello/parameters/num参数,默认数值是0,

echo 1 > /sys/modules/hello/parameters/num    #打开调试信息打印
echo 0 > /sys/modules/hello/parameters/num    #关闭调试信息打印

以上操作即可以实现动态关闭/打开调试信息

原文地址:https://www.cnblogs.com/FarmPick/p/9003612.html

时间: 2025-01-08 14:14:10

module_param 用于动态开启/关闭 驱动打印信息的相关文章

LINUX服务开启关闭建议

1.操作系统centos5.5 服务名称 功能 默认 建议 备注 NetworkManager 用于自动连接网络 关闭 关闭 对服务器没用 acpid 电源的开关等检测管理 开启 关闭 对服务器没用 anacron 一种计划任务管理 开启 开启 apmd 高级电源管理 开启 开启 atd 在指定时间执行命令 开启 关闭 如果用crond,则可关闭它 auditd 开启 自定 如果用selinux,需要开启它 autofs 文件系统自动加载.卸载 开启 自定 只在需要时开启它,可以停止 avahi

Linux系统下的shutdown命令用于安全的关闭/重启计算机

Linux系统下的shutdown命令用于安全的关闭/重启计算机,它不仅可以方便的实现定时关机,还可以由用户决定关机时的相关参数.在执行shutdown命令时,系统会给每个终端(用户)发送一条屏显,提示关机操作.定时关机只需要一个简单的参数,既可以是倒计时,也可以是确切的时间. 命令格式 1 shutdown [选项] [时间] [消息] 并有如下选项: - k 不执行任何关机操作,只发出警告信息给所有用户 - r 重新启动计算机 - h 关机并彻底断电 - f 快速关机且重启动时跳过fsck

Linux下开启关闭防火墙

一.Linux下开启/关闭防火墙命令 1) 永久性生效,重启后不会复原 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 即时生效,重启后复原 开启: /etc/init.d/iptables start 关闭: /etc/init.d/iptables stop 需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作. 在当开启了防火墙时,做如下设置,开启相关端口, 修改/etc/sysconfig/iptable

MySQL5.7在线开启/关闭GTID

MySQL5.7在线开启/关闭GTID 环境介绍 Part1:写在最前 截止本文撰写当日,MySQL5.7.16是官网的最新稳定版,本文将用MySQL5.7.16来进行演示.从MySQL5.6开始,支持了GTID复制模式,这种模式其实是把双刃剑,虽然容易搭建主从复制了,但使用不当,就容易出现一些错误,例如error 1236.在MySQL5.6如果开启GTID模式,需要在my.cnf中加入以下几个参数: ①log-bin=mysql-bin ②binlog_format=row ③log_sla

VS2013+cocos2d-x3.10 调试项目同时在控制台(黑窗--终端)打印信息

今天!有会儿空功夫,装了cocos2d-x v3.10. 新建项目,打开,发布,打包!(打包环境配置),真是一键搞定派. 好吧!这就是发展吧.快,简,易.只要你喜欢随心所欲. 在小玩之余发现了一个奇怪的事情,标准输出信息(如std::cout.printf等)不是都是输出到控制台的(也就是传说中的黑窗)?控制台那? 只有调试的游戏项目孤零零的站在那里! 我这里除了把HelloWorld!换了张图片以外!还有就是加了个onTouchBegan(),onTouchEnd()用于输出打印触摸的点的坐标

DDLog-不同颜色打印信息

文章转载自:http://www.cnblogs.com/hxwj/p/5036358.html (一)下载安装 1.安装插件 XcodeColors Github 链接:https://github.com/robbiehanson/XcodeColors 打开XcodeColors项目,编译即可.它会在你的电脑中安装插XcodeColors.xcplugin.具体路径在:~/Library/Application Support/Developer/Shared/Xcode/Plug-ins

Linux下开启/关闭防火墙命令

一.Linux下开启/关闭防火墙命令 1) 永久性生效,重启后不会复原 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 即时生效,重启后复原 开启: service iptables start 关闭: service iptables stop 需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作. 在当开启了防火墙时,做如下设置,开启相关端口, 修改/etc/sysconfig/iptables 文件,添加以

MySQL 5.6为什么关闭元数据统计信息自动更新&统计信息收集源代码探索

问题描述: MySQL 5.5.15 原sql如下: select constraint_schema,table_name,constraint_name,constraint_type from information_schema.table_constraints where table_schema not in ('information_schema', 'mysql', 'test','performance_schema'); 不只是上面提到的table_constraints

Windows编程 - 开启/关闭/遍历程序的类 代码(C++)

开启/关闭/遍历程序的类 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 类包含4个函数, 启动程序, 遍历所有进程, 关闭程序, 遍历进程依赖的动态链接库. 示例: Image.exe是预先生成的可执行程序(exe), 启动程序, 间隔5秒, 关闭程序. 使用方法参加测试程序. 代码: /* * process.h * * Created on: 2014.06.08 * Author: Spike */ /*vs 2012*/ #ifnde