`

Linux 驱动 Printk 在终端没有输出

 
阅读更多

有一个人写的很好借来用一下

printk无输出

Q:

int init_module()
{
printk("Hello\n");
}

编译成功后,也用insmod命令成功地载入。但并没有任何输出..

A:

1.同时在另一个窗口,用命令tail -f /var/log/messages察看日志文件,会看到log

2.用dmesg命令。
它的输出是在内核log中,不是控制台

-----------------------------------------------------

printk()函数的总结

我们在使用printk()函数中使用日志级别为的是使编程人员在编程过程中自定义地进行信息的输出,更加容易地掌握系统当前的状况。
对程序的调试起到了很重要的作用。
(下文中的日志级别和控制台日志控制级别是一个意思)

printk(日志级别 "消息文本");这里的日志级别通俗的说指的是对文本信息的一种输出范围上的指定。
日志级别一共有8个级别,printk的日志级别定义如下(在linux26/includelinux/kernel.h中):
#defineKERN_EMERG"<0>"/*紧急事件消息,系统崩溃之前提示,表示系统不可用*/
#defineKERN_ALERT"<1>"/*报告消息,表示必须立即采取措施*/
#defineKERN_CRIT"<2>"/*临界条件,通常涉及严重的硬件或软件操作失败*/
#defineKERN_ERR"<3>"/*错误条件,驱动程序常用KERN_ERR来报告硬件的错误*/
#defineKERN_WARNING"<4>"/*警告条件,对可能出现问题的情况进行警告*/
#defineKERN_NOTICE"<5>"/*正常但又重要的条件,用于提醒。常用于与安全相关的消息*/
#defineKERN_INFO"<6>"/*提示信息,如驱动程序启动时,打印硬件信息*/
#defineKERN_DEBUG"<7>"/*调试级别的消息*/

没有指定日志级别的printk语句默认采用的级别是 DEFAULT_ MESSAGE_LOGLEVEL(这个默认级别一般为<4>,即与KERN_WARNING在一个级别上),其定义在linux26/kernel/printk.c中可以找到。 0~3的等级可以再终端输出
下面是一个比较简单的使用
printk(KERN_INFO "INFO\n"); //这里可以使用数字代替 KERN_INFO,即可以写成printk(<6> "INFO\n");
在这个格式的定义中,日志级别和信息文本之间不能够使用逗号隔开,因为系统在进行编译的时候,将日志级别转换成字符串于后面的文本信息进行连接。

在对系统输出进行控制时,主要是讨论控制台和伪终端的输情况,以及系统日志等

分享到:
评论

相关推荐

    linux console printk 代码实现分析

    printk是Linux内核中的一种日志记录机制,用于记录内核消息,而console指的是内核通过哪个输出设备将这些消息显示出来。8250串口驱动是Linux内核中用于处理早期ISA设备(如PC的串行端口)的标准串口驱动。 首先,...

    串口驱动分析和Linux终端控制台体系

    ### 串口驱动分析与Linux终端控制台体系详解 #### 数据通信基础 数据通信主要分为两种形式:**并行通信**与**串行通信**。 - **并行通信**:利用多条数据线同时传输数据的每一位。其优点在于传输速度较快,但由于...

    Linux驱动开发指南V1.5.rar

    该指南由正点原子编著,旨在帮助开发者深入理解Linux驱动程序的原理与实践,提高在嵌入式Linux平台上的硬件驱动开发能力。I.MX6U是NXP(恩智浦)公司推出的一款高性能、低功耗的处理器,广泛应用于各种嵌入式设备,...

    Linux终端tty设备驱动编程.

    Linux终端tty设备驱动编程涉及Linux操作系统中终端设备的驱动开发,这些设备包括控制台、串行端口终端和伪终端。终端设备在Linux中是字符型设备,主要承担用户与系统交互的作用。Linux系统中终端设备的种类较多,...

    Linux设备驱动开发示例

    在Linux驱动开发中,`printk`函数是内核日志功能的一部分,常用来输出调试信息。`hello_printk`文件中的主要任务可能是注册和注销驱动,以及在注册时向系统日志打印一条消息。例如,驱动程序可能会包含以下关键函数...

    LINUX设备驱动程序(第3版).pdf 高清下载

    1. **日志记录**:利用 printk() 函数输出调试信息到内核日志。 2. **性能分析**:使用工具如 perf 和 ftrace 对驱动程序的性能进行分析。 3. **代码审查**:定期进行代码审查,确保代码质量并提高可维护性。 4. **...

    深入浅出Linux设备驱动编程

    字符设备驱动是Linux设备驱动的一种类型,用于处理类似串行端口、终端等字符流设备。字符设备驱动通常包括以下组件: - **文件操作接口**:提供一组标准文件操作函数,如`read`、`write`、`open`、`close`等。 - **...

    LINUX驱动开发庖丁解牛(1-4).pdf

    ### Linux驱动开发庖丁解牛知识点总结 #### 1. Linux驱动开发庖丁解牛之一——开发环境的建立 **核心知识点:** - **Linux内核架构:** 理解Linux内核的整体架构非常重要,这有助于开发者了解驱动程序在整个系统...

    Linux 驱动学习笔记pdf文档

    对于初学者而言,理解这些基础知识是深入学习Linux驱动开发的前提。通过上述内容的学习,开发者可以更好地掌握如何编写高效的驱动程序,并且能够更加熟练地使用Linux内核提供的各种API。此外,还介绍了模块的初始化...

    Linux 控制台终端

    在Linux系统中,控制台终端是操作系统与用户交互的基础,尤其在没有图形界面的情况下,控制台终端显得尤为重要。本文将详细解析Linux控制台参数以及printk如何将信息输出到控制台的过程。 首先,Linux内核在启动时...

    Linux下PCI设备驱动程序开发

    ### Linux下PCI设备驱动程序开发相关知识点 ...通过以上介绍,可以了解到PCI总线的基本概念、Linux驱动程序框架以及如何编写和编译PCI驱动程序。这些知识对于从事Linux底层开发的工程师来说至关重要。

    linux设备驱动程序(中文第三版) 2.6内核.pdf

    根据提供的文件信息,我们...综上所述,《Linux设备驱动程序(中文第三版)》这本书详细介绍了Linux设备驱动程序的基础理论、开发实践及调试技巧等内容,对于想要深入学习Linux驱动开发的人来说是一本不可多得的好书。

    linux程序设计 驱动程序部分

    对于开发者而言,掌握Linux驱动开发是深入理解操作系统工作原理、提升软件开发能力的重要途径之一。本文将详细介绍Linux程序设计中的驱动程序部分,特别是字符驱动与块设备驱动的相关概念和技术要点。 #### 字符...

    linux下设备驱动开发

    字符设备文件主要用于处理没有固定长度的数据,如终端、串口等;而块设备文件用于处理固定大小的数据块,如硬盘、光盘等。 - **使用**:通过 `open()` 函数打开设备文件,然后使用 `read()` 和 `write()` 进行数据的...

Global site tag (gtag.js) - Google Analytics