+ -
当前位置:首页 → 问答吧 → do_gettimeofday 读取的时间tv_usec总是0【已解决】

do_gettimeofday 读取的时间tv_usec总是0【已解决】

时间:2010-08-17

来源:互联网

本帖最后由 guozan523 于 2010-08-17 19:30 编辑

在内核中添加代码,测试一些设备的初始化时间
但是do_gettimeofday函数读取的时间,tv_usec部分总是0
比如:对init/main.c中的start_kernel()函数中的console_init()部分测量,这次是两处,曾经在4处进行测量,结果四处的时间都是一样,当然秒一样可以理解,但tv_usec部分全是0
  
注:start 和 end都是struct timeval类型,内核版本2.6.33.3,cpu是core 2,内核编译时把HPET Timer support编入了内核,其它部分不清楚哪些和这个问题有关,暂时没列出
  
do_gettimeofday(&start);
console_init();
do_gettimeofday(&end);
printk(KERN_DEBUG "whoisyourdaddy: The time used for console init is %ld, start time is %ld s %ld us, end time is %ld s %ld us\n", (start.tv_sec - end.tv_sec) * 1000000 + start.tv_usec - end.tv_usec, start.tv_sec, start.tv_usec, end.tv_sec, end.tv_usec);
  
从dmesg中读取的结果是
whoisyourdaddy: The time used for console init is 0, start time is 1282062076 s 0 us, end time is 1282062076 s 0 us

谢谢

作者: guozan523   发布时间: 2010-08-17

已解决,原来不是每次都是0
在函数了设置了10多个打印点,结果有些不是0,不过是199,699,13999之类的
有可能是console_init太快了,没有到1微秒,或者do_gettimeofday的问题,999和0结尾比较多,有空再接着研究

作者: guozan523   发布时间: 2010-08-17