我们可以写入 jiffies 变量吗
Can we write to jiffies variable
来自http://www.makelinux.net/ldd3/chp-7-sect-1.shtml
Needless to say, both jiffies
and jiffies_64
must be considered
read-only
我写了一个程序来验证它成功地更新了 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
设置为零。我错过了什么吗?
您正在阅读的只是一个警告。它是你(内核模块开发者)和内核之间不成文的契约。您不应该修改 jiffies
的值,因为这不由您决定,并且由内核根据一组您不必担心的复杂规则进行更新。 jiffies
值由调度程序在内部使用,因此修改它可能会发生不好的事情。您在模块中看到的变量很可能只是真实变量的线程本地副本,因此修改 可能 无效。无论如何,你不应该这样做。它仅作为附加信息提供给您,您的模块可能需要知道这些信息才能实现某些逻辑。
当然,因为你是用C语言工作的,所以对于变量没有"permissions"的概念。任何映射到可读可写内存区域的内容都可以被修改,您甚至可以通过先更改权限来修改只读内存中的数据。如果你愿意,你可以做各种坏事。有很多很多 你不应该改变的东西,即使你有能力这样做。
来自http://www.makelinux.net/ldd3/chp-7-sect-1.shtml
Needless to say, both
jiffies
andjiffies_64
must be considered read-only
我写了一个程序来验证它成功地更新了 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
设置为零。我错过了什么吗?
您正在阅读的只是一个警告。它是你(内核模块开发者)和内核之间不成文的契约。您不应该修改 jiffies
的值,因为这不由您决定,并且由内核根据一组您不必担心的复杂规则进行更新。 jiffies
值由调度程序在内部使用,因此修改它可能会发生不好的事情。您在模块中看到的变量很可能只是真实变量的线程本地副本,因此修改 可能 无效。无论如何,你不应该这样做。它仅作为附加信息提供给您,您的模块可能需要知道这些信息才能实现某些逻辑。
当然,因为你是用C语言工作的,所以对于变量没有"permissions"的概念。任何映射到可读可写内存区域的内容都可以被修改,您甚至可以通过先更改权限来修改只读内存中的数据。如果你愿意,你可以做各种坏事。有很多很多 你不应该改变的东西,即使你有能力这样做。