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可以查看中断信息,比如中断次数,

posted on 2018-03-30 20:19  拉风摊主  阅读(274)  评论(0编辑  收藏  举报

导航