Chinaunix首页 | 论坛 | 博客
  • 博客访问: 332932
  • 博文数量: 102
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 1146
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-21 22:33
文章分类

全部博文(102)

文章存档

2011年(8)

2010年(94)

我的朋友

分类: LINUX

2010-10-25 00:45:43

这是个系统调用,kernel/time.c。他的实现精度,依赖宏CONFIG_GENERIC_TIME.
do_gettimeofday()具体获取时间,这个函数实际上有两个文件定义:
1) arch/arm/kernel/time.c
CONFIG_GENERIC_TIME没有定义。
xtime是精确到ns的,而这个函数返回精度是usec,如果在这里定义,那么usec部分是system_timer->offset获取,其返回0.
2) kernle/time/timekeepting.c
定义宏时跑到这里。gettimeofday()返回ns精度时间timespec.有意思的是,此api的实现,也依赖宏。
宏定义:
getnstimeofday()-->xtime+timekeeping_get_ns(time/timekeeping.c)
未定义:
getnstimeofday()->do_gettimeofday(){kernel/time.c}-->okay
上面如果没有留意宏的话,会饶晕的,因为getnstimeofday()也会调用do_gettimeofday()...

当然,timekeeping.c里面的实现,会与hardware clock source交互。其中ns部分数据,由timekeeping_get_ns()实现,读取cycle数值,转换到ns.
阅读(3990) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-10-25 16:26:00

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com