Ядро Linux: определите функцию, которая внутри вызывает jiffies - PullRequest
0 голосов
/ 10 апреля 2019

В ядре 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 значение в первый раз / boot. вместо этого он показывает увеличенный номер каждого вызываемого, который всегда отличается.

1 Ответ

0 голосов
/ 10 апреля 2019

Макрос (#define) является заменой текста.

Каждый раз, когда вы пишете tcp_time_stamp_jiffies, компилятор заменяет его на ((__u32)(jiffies)). Он будет читать значение jiffies каждый раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...