Linux内核:定义内部调用'jiffies'的函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux内核:定义内部调用'jiffies'的函数相关的知识,希望对你有一定的参考价值。

在Linux内核中,我得到了定义tcp_time_stamp_jiffies,它在启动时只定义了一次:

#define tcp_time_stamp_jiffies         ((__u32)(jiffies))

但是每次调用tcp_time_stamp_jiffies,在方法,循环或事件中,值都在改变..,并且递增。是不是定义只定义了1个值jiffies,它在启动时只有1个值,那么该值应该一次又一次地使用,而不是一次又一次地调用jiffies?

尝试在首次启动时添加需要值tcp_time_stamp jiffies的自定义模块/驱动程序

#include <linux/proc_fs.h>
#include <net/tcp.h>

#define tcp_time_stamp_jiffies          ((__u32)(jiffies))

static ssize_t myread(struct file *file, char __user *ubuf,size_t count, loff_t *ppos) 
{
....
printk(KERN_ALERT "tcp_time_stamp_jiffies value : %u
", tcp_time_stamp_jiffies);
.....
}

期望调用myread的每个函数,它在第一次/ boot时显示tcp_time_stamp_jiffies值。相反,它显示每个被调用的增量数,总是不同的。

答案

宏(#define)是文本替换。

每次你编写tcp_time_stamp_jiffies时,编译器都会用((__u32)(jiffies))替换它。它每次都会读取jiffies的值。

以上是关于Linux内核:定义内部调用'jiffies'的函数的主要内容,如果未能解决你的问题,请参考以下文章

Linux内核中的jiffies及其作用介绍及jiffies等相关函数详解

Linux内核jiffies简介

在linux内核中获得比jiffies精度更高的时间值转

linux内核计算时间差以及jiffies溢出

Linux内核定时器

Linux0.11内核--进程调度分析之2.调度