免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7153 | 回复: 2

[时钟管理] do_gettimeofday函数调用的一些问题 [复制链接]

论坛徽章:
0
发表于 2015-07-17 13:15 |显示全部楼层
目前想在内核里取一个精确的时间,其实1ms就够用了,之前用的是jiffies这个,把.config里的HZ设置成1000,一个节拍就是1ms,但看文档说是do_gettimeofday的精度可以达到1us,我就这样调用下,
do_gettimeofday(&timestamp);
printk("timestamp test timestamp.tv_usec=%d\n", timestamp.tv_usec);
md5测试
do_gettimeofday(&timestamp);
printk("timestamp test timestamp.tv_usec=%d\n", timestamp.tv_usec);
我发现两次间隔是固定时间,而且拿jiffies做对比,根本不是us级的时间,我不知道这样用do_gettimeofday()有什么问题没?谁用的较多,帮帮忙。。多谢。。。。。

论坛徽章:
2
寅虎
日期:2014-11-25 21:47:342015小元宵徽章
日期:2015-03-06 15:58:18
发表于 2015-07-17 15:15 |显示全部楼层
do_gettimeofday貌似是基于RTC的,精度很低的,要高精度,试试TSC。

论坛徽章:
2
2015年亚洲杯之日本
日期:2015-03-25 11:21:322015亚冠之柏太阳神
日期:2015-07-13 10:36:04
发表于 2015-07-20 15:08 |显示全部楼层
回复 1# yv9200
  1. do_gettimeofday(struct timeval *tv)
复制代码
  1. struct timeval {
  2.         __kernel_time_t                tv_sec;        /* seconds */
  3.         __kernel_suseconds_t        tv_usec;        /* microseconds */
  4. };
复制代码
do_gettimeofday() asks the timing hardware what fraction of the current jiffy has already elapsed. The precision varies from one architecture to another, however, since it depends on the actual hardware mechanisms in use.

它依赖实际的硬件机制,这个精度每个体系都不同,所以可能某些体系上表现的不是很精确。(我的机器上表现正常,RHEL6.1)

current_kernel_time() 函数返回 timespec
  1. struct timespec current_kernel_time(void)
复制代码
  1. struct timespec {
  2.         __kernel_time_t        tv_sec;        /* seconds */
  3.         long                tv_nsec;                /* nanoseconds */
  4. };
复制代码
tv_nsec 是纳秒级,可以 / 1000 得到微妙。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP