#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 的精度.