首页 > 系统服务 > 详细

linux时间管理

时间:2019-07-06 13:12:59      阅读:89      评论:0      收藏:0      [点我收藏+]

#include <linux/param.h> HZ

 

HZ 符号指定了每秒产生的时钟嘀哒的数目.

 

#include <linux/jiffies.h> volatile unsigned long jiffies; u64 jiffies_64;

 

jiffies_64 变量每个时钟嘀哒时被递增; 因此, 它是每秒递增 HZ 次. 内核代码 几乎常常引用 jiffies, 它在 64-位平台和 jiffies_64 相同并且在 32-位平台是 它低有效的一半.

 

int time_after(unsigned long a, unsigned long b); int time_before(unsigned long a, unsigned long b); int time_after_eq(unsigned long a, unsigned long b);

int time_before_eq(unsigned long a, unsigned long b);

 

这些布尔表达式以一种安全的方式比较 jiffies, 没有万一计数器溢出的问题和不 需要存取 jiffies_64.

 

u64 get_jiffies_64(void);

 

获取 jiffies_64 而没有竞争条件.

 

#include <linux/time.h>

unsigned long timespec_to_jiffies(struct timespec *value);

void jiffies_to_timespec(unsigned long jiffies, struct timespec *value); unsigned long timeval_to_jiffies(struct timeval *value);

void jiffies_to_timeval(unsigned long jiffies, struct timeval *value);

 

在 jiffies 和其他表示之间转换时间表示.

 

#include <asm/msr.h> rdtsc(low32,high32); rdtscl(low32);

 

176

 

rdtscll(var32);

 

x86-特定的宏定义来读取时戳计数器. 它们作为 2 半 32-位来读取, 只读低一半, 或者全部读到一个 long long 变量.

 

#include <linux/timex.h> cycles_t get_cycles(void);

 

以平台独立的方式返回时戳计数器. 如果 CPU 没提供时戳特性, 返回 0.

 

#include <linux/time.h>

unsigned long mktime(year, mon, day, h, m, s);

 

返回自 Epoch 以来的秒数, 基于 6 个 unsigned int 参数. void do_gettimeofday(struct timeval *tv);

返回当前时间, 作为自 Epoch 以来的秒数和微秒数, 用硬件能提供的最好的精度. 在大部分的平台这个解决方法是一个微秒或者更好, 尽管一些平台只提供 jiffies 精度.

 

struct timespec current_kernel_time(void); 返回当前时间, 以一个 jiffy 的精度.

linux时间管理

原文:https://www.cnblogs.com/fanweisheng/p/11142044.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!