嵌入式linux的调用技术
——第10章读书笔记及心得
通过本章的学习了解了printk函数。该函数与printf函数类似,用于打印内核调试信息。只是前者运行在内核空间,后者运行在用户空间。即linux驱动这样的linux内核程序只能使用printk函数输出调试信息。Printk函数的原型:asmLinkKage int printk(const char *fmt,…)。Printk文件是一个简单的有4个数字组成的文本文件,该文件的默认值问6 4 1 7。6代表将消息输出到控制台的级别,只有高于该级别的输出信息才会输出到控制台。4代表默认的消息日志级别。如果不在printk函数中制定日志级别,就会使用该值作为默认的级别。1表示控制台日志级别可被设置的最小值(最高优先级别)。7表示控制台日志级别的默认值。
查询日志消息的命令为:
#dmesg
#cat /var/long/syslog
#cat /proc/kmsg
#dmesg | grep printk
cat /var/log/syslog |grep printk
tail –n 10 /var/log/syslog
大量使用printk函数操作日志文件或控制台设备文件会严重影响linux驱动的性能。因此,这就要求linux驱动只能在开发阶段使用printk函数输出消息。
在linux文件系统中,/proc经常被用来作为内核空间与用户空间进行数据交互的工具。/proc文件系统的行为方式与设备文件系统类似。/proc是虚拟文件系统,是内存映射。所有的读写/proc的操作都是对内存的读写。所以读写/proc文件系统的速度要远比读写/dev文件系统的速度快。因此,/proc文件系统也可作为linux驱动与用户空间程序交互的工具。