内核定时机制API之getnstimeofday
2018-02-14 08:23
423 查看
static inline void getnstimeofday(struct timespec *ts)用于获得系统当前时间 并以timespec结构体的形式返回给用户. 其源码分析如下: static inline void getnstimeofday(struct timespec *ts) { getnstimeofday64(ts); } 直接调用getnstimeofday64 void getnstimeofday64(struct timespec64 *ts) { WARN_ON(__getnstimeofday64(ts)); } 又直接调用__getnstimeofday64,注意这里__getnstimeofday64 不能返回非0值,否则视为失败 int __getnstimeofday64(struct timespec64 *ts) { struct timekeeper *tk = &tk_core.timekeeper; unsigned long seq; u64 nsecs; do { seq = read_seqcount_begin(&tk_core.seq); ts->tv_sec = tk->xtime_sec; nsecs = timekeeping_get_ns(&tk->tkr_mono); } while (read_seqcount_retry(&tk_core.seq, seq)); ts->tv_nsec = 0; timespec64_add_ns(ts, nsecs); /* * Do not bail out early, in case there were callers still using * the value, even in the face of the WARN_ON. */ #这个函数唯一可能失败的地方就是timekeeping 处于suspend中。 if (unlikely(timekeeping_suspended)) return -EAGAIN; return 0; } 这个函数我们之前分析过,主要从timekeeper中回去当前时间,然后转成timespec64,返回给用户
相关文章推荐
- 内核定时机制API之do_gettimeofday
- linux下的定时或计时操作(gettimeofday等的用法,秒,微妙,纳秒(转载)
- sched_clock()、current_kernel_time()、getnstimeofday()
- 内核定时机制API之ns_to_timespec64 和 ns_to_timeval
- 内核定时机制API之current_kernel_time
- linux下的定时或计时操作(gettimeofday等的用法)
- linux下的定时或计时操作(gettimeofday等的用法,秒,微妙,纳秒)
- linux的查询时间实现秒定时+gettimeofday()函数的用法
- linux下的定时或计时操作(gettimeofday等的用法,秒,微妙,纳秒)(转载)
- Linux内核中获取时间函数do_gettimeofday
- linux下的定时或计时操作(gettimeofday等的用法,秒,微妙,纳秒
- 内核定时机制API之get_seconds
- gettimeofday和xtime的定时精度
- Linux内核中获取时间函数do_gettimeofday
- 内核定时机制API之timespec64_add
- 内核定时机制API之timespec64_compare
- linux常用的时间获取函数(time,gettimeofday,clock_gettime,_ftime,localtime,strftime )
- linux下使用gettimeofday获取当前时间的注意事项
- struct timeval和gettimeofday小记
- 谈谈时间函数gettimeofday