Можем ли мы записать в переменную jiffies - PullRequest
0 голосов
/ 04 февраля 2020

С http://www.makelinux.net/ldd3/chp-7-sect-1.shtml

Излишне говорить, что jiffies и jiffies_64 должны рассматриваться только для чтения

I написал программу для проверки, и она успешно обновляет значение jiffies.

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/jiffies.h>

static int __init test_hello_init(void)
{
    jiffies = 0;
    pr_info("jiffies:%lu\n", jiffies);
    return 0;
}

static void __exit test_hello_exit(void)
{
}

MODULE_LICENSE("GPL");

module_init(test_hello_init);
module_exit(test_hello_exit);

Этот модуль успешно устанавливает jiffies в ноль. Я что-то упустил?

1 Ответ

2 голосов
/ 04 февраля 2020

То, что вы читаете, является всего лишь предупреждением. Это неписаный договор между вами (разработчиком модуля ядра) и ядром. Вам не следует изменять значение jiffies, поскольку это не ваша задача, и оно обновляется ядром в соответствии с набором сложных правил, о которых вам не следует беспокоиться. Значение jiffies используется планировщиком для внутреннего использования, поэтому при его изменении могут произойти неприятности. Скорее всего, переменная, которую вы видите в вашем модуле, является только локальной копией действительной копии, поэтому изменение может не иметь никакого эффекта. В любом случае, вы не должны этого делать. Он предоставляется вам только в качестве дополнительной информации, которую может потребоваться вашему модулю для реализации некоторой логики c.

Конечно, поскольку вы работаете в C, понятия «разрешения» не существует. для переменных. Все, что отображается в доступной для чтения и записи области памяти, можно изменить, вы даже можете изменить данные в постоянной памяти, изменив сначала разрешения. Вы можете делать всякие плохие вещи, если хотите. Есть много вещей, которые вы не должны изменять, даже если у вас есть возможность сделать это.

...