首页 > 其他分享 >内核日志系统设计 --20240305

内核日志系统设计 --20240305

时间:2024-03-05 22:25:10浏览次数:18  
标签:__ 20240305 log -- fmt print debug 日志

简单日志系统设计 在高通或者MTK的源码中,以camera系统为例,多个子模块,我们可以通过向debug系统中通过打开关闭相关模块对应的bit位来开启或关闭模块日志   在内核中实现其实并不复杂,使用module_param来创建一个sys节点来进行日志控制: 如下:

static int debug = 0x3;         // init print err & info log
module_param(debug, int, 0644);
MODULE_PARM_DESC(debug, "timer test debug level 0-4:\n"
                        "\t\t BIT0 err log print\n"
                        "\t\t BIT1 info log print\n"
                        "\t\t BIT2 debug log print\n"
                        "\t\t BIT3 reg info print\n");
再通过debug数值,进行数值与,就可以选择打印什么模块的log了。 如下:
#define cam_debug(fmt, ...)   \
        do {\
                if (debug & BIT(2)) {   \
                        printk("CAM_DEBUG [%s:%s:%d]: " fmt, __FILE__, __func__, __LINE__, ##__VA_ARGS__);    \
                }       \
        } while (0)

#define cam_err(fmt, ...)     \
        do {\
                if (debug & BIT(0)) {   \
                        printk("CAM_ERR [%s:%s:%d]: " fmt, __FILE__, __func__, __LINE__, ##__VA_ARGS__);      \
                }       \
        } while (0)

#define cam_info(fmt, ...)    \
        do {\
                if (debug & BIT(1)) {   \
                        printk("CAM_INFO [%s:%s:%d]: " fmt, __FILE__, __func__, __LINE__, ##__VA_ARGS__);     \
                }       \
        } while (0)
这样,就可以在下面的节点
/sys/module/[driver name]/parameters/debug
进行模块的打印log控制了  

标签:__,20240305,log,--,fmt,print,debug,日志
From: https://www.cnblogs.com/lethe1203/p/18055303

相关文章

  • 外国教育史教程
    书本详情外国教育史教程作者:吴式颖出版社:人民教育出版社出版年:2001-5-1页数:788定价:34.20元装帧:平装ISBN:9787107129575内容简介  · · · · · ·《普通高等教育九五国家级重点教材•外国教育史教程》分为古代教育史、近代教育史和现代教育史三编......
  • jwt
    funcmain(){//生成tokenmaxAge:=60*60*24//或者用下面自定义claimclaims:=jwt.MapClaims{"value":&Student{Name:"musong"},"exp":time.Now().Add(time.Duration(maxAge)*time.Second).Unix(),}token......
  • 软件工程日报1
     第一天第二天第三天第四天第五天所花时间(包括上课)6小时    代码量(行)300    博客量(篇)1    所学知识了解安卓相关数据库的知识,下载安装了matlab    ......
  • 112. 路径总和c
    /***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*/booljudge(structTreeNode*root,intnow,intsum){now+=root->val;if(!root->left&&......
  • 教育学(第七版)
    书本详情 教育学(第七版) 作者:王道俊/郭文安 出版社:人民教育出版社 副标题:普通高等教育国家级规划教材 出版年:2016-6 页数:432 定价:39.8 装帧:平装 ISBN:9787107251375内容简介  · · · · · · 该书系受教育部委托编写、全国通用的高校教育......
  • 中国教育史
    书本详情中国教育史作者:孙培青/杜成宪出版社:华东师范大学出版社出版年:2019-7-1页数:521定价:68.00元装帧:平装ISBN:9787567589988 内容简介  · · · · · · 中国教育史这门课程讲什么?作为教育学类专业基础课程,中国教育史重在讲述中国历史上......
  • [GIT] 解决Git中fatal: refusing to merge unrelated histories
    1问题背景在本地gitcommit后,准备在gitpush之前做一次gitpull,结果报:$gitpullfatal:refusingtomergeunrelatedhistories2问题分析根本原因:你可能会在gitpull或者gitpush中都有可能会遇到,这是因为两个分支没有取得关系。3解决方法那么怎么解决呢?......
  • PlatformIO+esp32+添加自己的库(.c.h文件)
        什么都放main.c的话,很有可能堆积成屎山,所以我想给分开写,每个功能有自己的.c、.h文件。在lib下新建文件夹,例如led,再在里面分别建led.c、led.h;写好内容后再main.h引用头文件led.h即可。(以上步骤没问题哈)但是我这样子看着没问题,但是一BUILD就会报错:undefinedrefere......
  • 【实用工具】IDEA常用快捷键
    ctrl+alt+insert:新建类/文件夹...shift+alt+上下 :单行上/下移动ctrl+d:复制行ctrl+x: 删除行Ctrl+Backspace:按单词删除Ctr+Shift+U:大小写转化alt+insert:快速生成set/get  equals/hashcode /overrideshift+f6:改类名/方法名refactorctrl......
  • InnoDB存储引擎对MVCC的实现
    一 多版本并发控制(Multi-VersionConcurrencyControl)1、读操作(SELECT):当一个事务执行读操作时,它会使用快照读取。快照读取是基于事务开始时数据库中的状态创建的,因此事务不会读取其他事务尚未提交的修改。具体工作情况如下:对于读取操作,事务会查找符合条件的数据行,并选择符......