• linux时间管理


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

  • 相关阅读:
    20188477 编程作业
    原型设计
    案例分析
    编程作业
    阅读任务
    准备工作
    原型设计作业
    案例分析作业
    编程作业
    阅读任务
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11142044.html
Copyright © 2020-2023  润新知