25、驱动调试之打印到proc虚拟文件
1、dmesg指令是通过读/proc/kmsg来获取打印信息,也可以通过cat /proc/kmsg打印;
说明:kmsg是环形缓存区,只能读一次
2、内核中fs/proc目录下有相关文件,比如proc_misc.c,在入口函数中可以看到(4.3.2内核改到kmsg.c文件中)
#ifdef CINFIG_PRINTK
entry = create_proc_entry("kmsg"--------);//在proc下创建kmsg文件
entry ->proc_fops = &proc_kmsg_operations;//proc_kmsg_operations是个file_operation结构体,提供对文件的读写函数
3、模仿printk制作myprintk函数,数据写到mylog_buf,读/proc/mymsg获得数据
4、通过EXPORT_SYMBOL(函数名)导出函数给外部驱动使用,外部驱动在使用的时候通过extern int myprintk(const char *fmt,...)声明
5、如果应用程序使用到了中断,然应用程序后台运行,通过cat /proc/interrupts可以查看中断信息,比如中断次数,