1秒=1000毫秒 1毫秒=1000微秒 1微秒=1000纳秒
此处读取的是ns,
t = printk_clock();
nanosec_rem = do_div(t, 1000000000);
对于do_div()是一个宏,t现在是整数部分,返回值nanosec_rem是余数部分
tlen = sprintf(tbuf,"<%c>[%5lu.%06lu] ",loglev_char,(unsigned long)t,nanosec_rem/1000);
此处nanosec_rem/1000取到的是微妙。
对于suspend以及resume,printk_clock()是基于cpu调度实现的,如果suspend之后cpu不再调度,所以值不变,由于timekeep的framework的机制,会自动唤醒之后修改jiffies的值,可以考虑用jiffies的值来修正休眠唤醒printk打印时间的问题
printk打印时间在sleep之后不继续,反映不出休眠时间的问题
最新推荐文章于 2025-04-30 10:21:44 发布
本文介绍了时间单位的换算及内核中时间记录的方法,详细解释了如何通过宏do_div进行时间转换,并讨论了在suspend及resume状态下printk_clock()函数的表现。考虑到jiffies值的变化,提出了修正休眠唤醒时时间显示的方案。
617

被折叠的 条评论
为什么被折叠?



