首页 > 解决方案 > 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\n", tcp_time_stamp_jiffies);
.....
}

预计每个函数 myread 都会被调用,它会tcp_time_stamp_jiffies在第一次/启动时显示值。相反,它显示每次调用的递增数字,总是不同的。

标签: ckernel

解决方案


宏 ( #define) 是文本替换。

每次编写tcp_time_stamp_jiffies编译器时都会将其替换为((__u32)(jiffies)). 它将读取jiffies每次的值。


推荐阅读