zoukankan      html  css  js  c++  java
  • printk 的简要分析

    Printk的级别:

    在内核代码 include/linux/kernel.h 中有如下代码, 它们表示 07这 个记录级别的名称。  

    #define KERN_EMERG  "<0>" /* system is unusable   */ 

    #define KERN_ALERT   "<1>" /* action must be taken immediately */ 

    #define KERN_CRIT     "<2>" /* critical conditions   */ 

    #define KERN_ERR      "<3>" /* error conditions    */ 

    #define KERN_WARNING "<4>" /* warning conditions   */ 

    #define KERN_NOTICE   "<5>" /* normal but significant condition */ 

    #define KERN_INFO      "<6>" /* informational   */ 

    内核会根据uboot里的tty=SACO来找到对应的硬件操作函数;console_setup

    Register_console=

    串口打印:

    1、name=ttySAC0;

    2、各种函数;

    lcd打印:

    1、name

    2、各种函数;

    Printk 的默认级别是4;

    #define DBG_PRINTK printk

    调试驱动程序时候就这样用:在驱动里觉得大概有问题的那行添加:

    DBG_PRINTK("%s %s %d\n", __FILE__,__FUNCTION__,__LINE__) ,通过这个来判断到底是哪行出错

    或  加上打印级别

    直接:printk(KERN_DEBUG "%s %s %d\n", __FILE__,__FUNCTION__,__LINE__)

    修改printk的级别:要小于第一个的级别才能打印,第二个是默认值

    查看:cat /proc/sys/kernel/printk

    7    4    1    7

    修改:echo "8 4 1 7" > /proc/sys/kernel/printk 如果将console_loglevel被改为1,于是所有的printk信息都不会被打印

    在uboot界面设置

    Setenv bootargs loglevel=0,其他参数不变,这样所有的打印信息都没有了

    但是启动后还可以dmesg命令将缓冲区里的内容打印出来。

    Setenv bootargs debug  其他参数不变,这样所有的东西都会被打印出来。

  • 相关阅读:
    mysql优化之索引优化
    mysqld --debug-sync
    mysql.cnf 配制文件详解
    my.cnf 中字符集设置
    tcp_tw_reuse 与 net.ipv4.tcp_tw_recycle
    mysql init_connect 参数的其他用处
    监控mysql索引使用效率的脚本
    mysql 源代码学习 博客 [lock..]
    mysqld with valgrind
    思维导图软件
  • 原文地址:https://www.cnblogs.com/start530/p/3834400.html
Copyright © 2011-2022 走看看