zoukankan      html  css  js  c++  java
  • linux驱动中printk的使用注意事项

    今天在按键驱动中增加printk(KERN_INFO "gpio_keys_gpio_isr() ");在驱动加载阶段可以输出调试信息,但驱动加载起来后的信息,在串口端看不到输出信息

    在kernel/

    /* We show everything that is MORE important than this.. */

    #define MINIMUM_CONSOLE_LOGLEVEL 1 /* Minimum loglevel we let people use */

    #define DEFAULT_CONSOLE_LOGLEVEL 7 /* anything MORE serious than KERN_DEBUG */

    int console_printk[4] = {

           DEFAULT_CONSOLE_LOGLEVEL,    /* console_loglevel */

           DEFAULT_MESSAGE_LOGLEVEL,    /* default_message_loglevel */

           MINIMUM_CONSOLE_LOGLEVEL, /* minimum_console_loglevel */

           DEFAULT_CONSOLE_LOGLEVEL,    /* default_console_loglevel */

    };

    下面是控制台日志级别的一些简要的介绍

     控制台相应的日志级别定义如下:

     #define MINIMUM_CONSOLE_LOGLEVEL  1   /*可以使用的最小日志级别*/

     #define DEFAULT_CONSOLE_LOGLEVEL  7 /*比KERN_DEBUG 更重要的消息都被打印*/

    int console_printk[4] = {

     DEFAULT_CONSOLE_LOGLEVEL,/*控制台日志级别,优先级高于该值的消息将在控制台显示*/

     /*默认消息日志级别,printk没定义优先级时,打印这个优先级以上的消息*/

     DEFAULT_MESSAGE_LOGLEVEL,

     /*最小控制台日志级别,控制台日志级别可被设置的最小值(最高优先级)*/

     MINIMUM_CONSOLE_LOGLEVEL,

     DEFAULT_CONSOLE_LOGLEVEL,/* 默认的控制台日志级别*/

     };

     在进行查看的时候,可以使用命令 cat /proc/sys/kernel/printk来查看这四个值

    6   6   1  7

    可知我们系统默认控制台级别为第1个6,而我们要输出的信息级别是KERN_INFO(刚好是6),如果要输出这个信息,需要把第1个6改为7,修改命令:

    echo “7 6 1 7” > /proc/sys/kernel/printk

    或者是把上面printk(KERN_INFO "gpio_keys_gpio_isr() ");改为KERN_ERR或是其他比他高级别的也可以。

    但是在没有改打印机级别,通过cat /proc/kmsg也可以抓调试信息也可以抓到这个信息。

  • 相关阅读:
    cf 786B. Legacy(线段树区间建图)
    cf 1416D. Graph and Queries (生成树重构+线段树维护dfs序)
    cf 1437E. Make It Increasing
    cf 1434D. Roads and Ramen (树上最长偶权链)
    cf 1413C (贪心排序+双指针)
    cf 1421E. Swedish Heroes (dp)
    CF1428 F.Fruit Sequences
    11.Redis详解(十一)------ 过期删除策略和内存淘汰策略
    10.Redis详解(十)------ 集群模式详解
    9.Redis详解(九)------ 哨兵(Sentinel)模式详解
  • 原文地址:https://www.cnblogs.com/LoongEmbedded/p/5295608.html
Copyright © 2011-2022 走看看