c - Linux内核: define function that inside calls 'jiffies'

标签 c kernel

在 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 值。相反,它会显示每次调用时都会增加的数字,该数字总是不同的。

最佳答案

宏 (#define) 是文本替换。

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

关于c - Linux内核: define function that inside calls 'jiffies' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55603776/

相关文章:

linux - 添加其他对象后内核模块未加载

linux - 内核 oops - 页面保护错误

linux - 如何在内核模块中断中触发一个函数

c - 我已经在centos上安装了kernel-devel,还是找不到内核头文件

c - 使用具有自定义操作功能的 MPI reduceAll

c++ - pthread_mutex_lock 当它是同一个线程时如何不锁定

c - 如何使用内核头文件编译用户空间程序

c++ - 在库中使用 srand() 的问题

C 编程 - 基于命令行参数的数组大小

python - 在 lldb Python 脚本中取消引用类型为 void * 的 SBValue