首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

printk罗致系统崩溃

2013-10-19 
printk导致系统崩溃具体实例如下:printk(KERN_ERR random addess s is: %s\n,(char *)0X00000333)输出

printk导致系统崩溃

  具体实例如下:

  printk(KERN_ERR "random addess s is: %s\n",(char *)0X00000333);
  输出为 : random addess s is: (null)

  printk(KERN_ERR "random addess s is: %s\n",(char *)0X000003333);
  却会导致系统崩溃

  通过分析printk的源码发现:

  printk-->vsnprintf-->string

 

   char *string(char *buf, char *end, const char *s, struct printf_spec spec)   {          int len, i;          //加入输入的地址小于flash 一个page的时候(刚刚我用的是flash page size 是4096)         //  直接返回 “null”          if ((unsigned long)s < PAGE_SIZE)                     s = "(null)";          return buf;   }


 

   加入大于4096的话,去这个地址取字符串,会产生 memory 异常,导致系统奔溃。

 

热点排行