• 第十章


    第十章

     

    1.打印内核调试信息:printk

    printk函数的原型如下:

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

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

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

    3.通过文件虚拟系统(/proc)进行数据交互

    /proc并不是真正的文件系统而是内存映射,所有读写/proc的操作都是对内存的读写,/proc文件可以成为linux驱动与用户空间程序交互的工具。在Linux 驱动程序中可以使用内核函数在/proc 目录中创建和删除虚拟文件,也可以建立和删除虚拟目录。

    四个函数:

    (1) proc_mkdir 建立虚拟目录

    (2)create_proc_entry 建立虚拟文件

    (3)create_proc_read_entry 建立虚拟只读文件

    (4) remove_proc_entry 删除虚拟文件或目录

    4.调试工具

    (1)用gdb调试用户空间程序

    (2)用gdbserver远程调试用户空间程序

    (3)用kgdb远程调试内核程序

  • 相关阅读:
    Qt 6 正式发布
    GTK 4.0 正式发布
    编译 flink 1.12.0
    Flink 1.12.0 sql 任务指定 job name
    【翻译】Apache Flink 1.12.0 Release Announcement
    【源码】Flink 三层图结构 —— JobGraph 生成过程
    【源码】Flink 算子 chain 在一起的条件
    Web开发基础之CMDB系统开发之三
    Web开发基础之CMDB系统开发之二
    Ubuntu18.04升级至20.04
  • 原文地址:https://www.cnblogs.com/SamLee-/p/5650258.html
Copyright © 2020-2023  润新知