zoukankan      html  css  js  c++  java
  • Android深度探索--HAL与驱动开发----第十章读书笔记

    printk函数的用法于-printf 函数类似,只不过printk函数运行在内核空间, printf函数运行在用户空间。也就是说,像Linux 驱动这样的Linux内核程序只能使用printk 函数输出调试信息

    虽然使用printk 函数可以很方便地将消息写入日志文件或控制台。但大量使用printk 函数频繁操作日志文件或控制台设备文件Udev/console)会严重影响Linux 驱动的性能(因为写磁盘的速度远没有读写内存的速度快〉,因此,这就要求Linux 驱动只在开发阶段使用printk 函数输出消息,在正式友布Linux 驱动时将可能影响性能的printk 函数去掉. 当然,最容易想到的方法就是挨个删除printk 函数,或注释printk 函数。但这样做很麻烦,而且以后想加上printk 函数也是同样麻烦。要想控制printk 函数的输出,而且实现起来很方便, 最好的方法无疑是利用C 语言中的编译指令(#if 、#else 、#endif 等)。打印内核调试信息:printk

     printk 函数的原型如下:

     asmlinkage int printk(const char * fmt, ...)

    printk文件是一个简单的有4 个数字组成的文本文件,该文件的默认.如下:

    6    4    1    7

    如果想修改printk 文件中的内容,要求任何信息都输出到控制台,可以在Linux 终端执行下面的命令。

    #echo 8 > /proc/sys/kernel/printk

    修改后的printk 文件的内容如下:

    8    4    1    7

    执行有如下的命令可以编译和安装printk_demo驱动。

    # sh build.sh

    防止printk函数降低Linux驱动性能:

    修改上-节的printk_demo 驱动代码,通过编译指令定义了一个pr_debug宏,并通过修改编译指令的条件值来控制是否调用printk函数。

    通过虚拟文件系统(/proc)进行数据交互http://www.cnblogs.com/caoyutao/

  • 相关阅读:
    rs
    stm32f767 usoc3
    stm32f767 RTT 日志
    stm32f767 标准库 工程模板
    stm32f767 HAL 工程模板
    docker tab 补全 linux tab 补全
    docker anconda 依赖 下载 不了
    docker run 常用 指令
    linux scp 命令
    Dockerfile 常用参数说明
  • 原文地址:https://www.cnblogs.com/caoyutao/p/5635900.html
Copyright © 2011-2022 走看看