【Linux-驱动】printk的打印级别

级别:
日志级别用宏表示,日志级别宏展开为一个字符串,在编译是由预处理器将它和消息
本文拼接成一个字符串,因此printk函数中日志级别宏和格式字符串间不能有逗号。
printk的日志级别定义在 /include/linux/kernel.h 中:

#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            */
#define    KERN_DEBUG     "<7>"    /* debug-level messages            */

日志级别的范围"0~7",没有指定日志级别的printk语句默认采用的级别是
DEFAULT_MESSAGE_LOGLEVEL,其定义列出如下(在/kernel/printk.c中):

#define DEFAULT_MESSAGE_LOGLEVEL  4

当printk语句采用的级别高于4时(该宏表示的数字小于4)将在终端打印。
通过如下命令可以让所有打印输出到终端:

echo 8 > /proc/sys/kernel/printk

dmesg命令 通过查看/proc/kmsg文件可以打印所有的内核信息

时间: 2025-01-15 16:17:07

【Linux-驱动】printk的打印级别的相关文章

第1个linux驱动___打印&quot;hello world&quot;

为了方便后续的深入,我们在驱动程序中用printk( )函数来打印"hello world",printk( )是内核中自带的函数,专门用于在打印内核信息. 在安装驱动模块到内核中的时,需要进行驱动模块的初始化,初始化具体做什么我们先不提,我们暂时只用printk( )打印"hello world": int first_drv_init(void) { printk("hello world!\n"); return 0; } · 关于prin

linux内核打印级别

1.printk()是一个内核的一个记录日志的机制,经常用来记录信息或者警告.printk可以指定输出日志的优先级,在include/linux/kern_levels.h中有相应的宏定义 1 #define KERN_SOH "\001" /* ASCII Start Of Header */ 2 #define KERN_SOH_ASCII '\001' 3 4 #define KERN_EMERG KERN_SOH "0" /* system is unusa

更改printk打印级别

1.查看当前控制台的打印级别 cat /proc/sys/kernel/printk 4    4    1    7 其中第一个"4"表示内核打印函数printk的打印级别,只有级别比他高的信息才能在控制台上打印出来,既 0-3级别的信息 2.修改打印 echo "新的打印级别  4    1    7" >/proc/sys/kernel/printk 3.不够打印级别的信息会被写到日志中可通过dmesg 命令来查看 4.printk的打印级别 #defi

Linux驱动学习之常用的模块操作命令

1.常用的模块操作命令 (1)lsmod(list module,将模块列表显示),功能是打印出当前内核中已经安装的模块列表 (2)insmod(install module,安装模块),功能是向当前内核中去安装一个模块,用法是insmod xxx.ko (3)modinfo(module information,模块信息),功能是打印出一个内核模块的自带信息.,用法是modinfo xxx.ko,注意要加.ko,也就是说是一个静态的文件形式. (4)rmmod(remove module,卸载

linux驱动开发要知道的那些知识(二)------list内核链表

内核链表 链表数据结构简介 链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式.相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据.链表的开销主要是访问的顺序性和组织链的空间损失. 通常链表数据结构至少应包含两个域:数据域和指针域,数据域用于存储数据,指针域用于建立与下一个节点的联系.按照指针域的组织以及各个节点之间的联系形式,链表又可以分为单链表.双链表.

Linux驱动开发 -- 打开dev_dbg()

Linux驱动开发 -- 打开dev_dbg() 2012-10-23 19:21:54 分类: LINUX linux设备驱动调试,我们在内核中看到内核使用dev_dbg来控制输出信息,这个函数的实质是调用printk(KERN_DEBUG )来输出打印信息.要打开这个开关需要下面两步. 1.打开调试开关:你调试的文件中必然包含了<linux/device.h>,或者<linux /paltforam_device.h>,后者包含了前者,在包含此头文件之前,使用#define D

第1个linux驱动___安装驱动模块之内核再爱我一次

在上一篇博文中,我们已经通过Makefile编译得到first_drv.ko文件,这是一个可以被安装到ubuntu中的驱动模块,要怎样做呢? 在/work/my_drivers/first_drv/1th/目录下执行:insmod first_drv.ko 如果你是在普通用户状态下执行的这条命令,可以看到系统提醒我们:insmod: error inserting 'first_drv.ko': -1 Operation not permitted 这是因为安装驱动模块需要超级权限,你可以在普通

disk磁盘管理与Linux驱动编写

磁盘管理 一.关于硬盘接口 安装linux red hat系统,到分区时发现硬盘驱动器设备 /dev/sda             #sata接口设备名 /dev/sda1 #sda对应的物理分区 /dev/sda2 /dev/sda3 而又的安装时硬盘驱动设备名为 /dev/hda #IDE接口设备目录 /dev/hda1 sda和hda有什么区别那? HDA是使用了ide接口的硬盘的名称.SDA是sata接口的硬盘的名称.在最新的2.6.19内核里,所有的硬盘都叫SDA了. GERUB里填

(55)Linux驱动开发之一驱动概述

驱动概述 驱动用在哪里?非标准类设备的编写和标准类设备的驱动移植. 驱动实际上是随着linux内核相伴而生的.某段代码能够控制我们的硬件去工作,去动,这段代码就称为我们的驱动代码. 技术只是一种手段,一种技巧,我们应该利用技术去搞出产品. 5.1.1_2.什么是驱动1_2 5.1.1.1.理解驱动的概念 (1)驱动一词的字面意思 (2)物理上的驱动 (3)硬件中的驱动 (4)linux内核驱动.软件层面的驱动广义上就是指:这一段代码操作了硬件去动,所以这一段代码就叫硬件的驱动程序.(本质上是电力