';当前任务';在不同版本的linux内核中是什么意思?

';当前任务';在不同版本的linux内核中是什么意思?,linux,kernel,task,Linux,Kernel,Task,我知道current_task为每个cpu保存task_struct*指针的地址 然而,当在不同的内核版本中读取这个符号值时,我得到了不同的结果 在4.19.65内核中,我通过cat/proc/kallsyms | grep current_task抓住它,得到: 0000000000015c40 A current_task 这意味着它是一个绝对值 在4.20.13内核中,我得到: ffffffffbea3a040 D current_task 这意味着它在数据部分 我使用了4.19.65

我知道
current_task
为每个cpu保存
task_struct*
指针的地址

然而,当在不同的内核版本中读取这个符号值时,我得到了不同的结果

4.19.65
内核中,我通过
cat/proc/kallsyms | grep current_task
抓住它,得到:

0000000000015c40 A current_task
这意味着它是一个绝对值

4.20.13
内核中,我得到:

ffffffffbea3a040 D current_task
这意味着它在数据部分

我使用了
4.19.65
内核的默认配置。但是,我没有获得
4.20.13
的配置文件。
我想知道这个值的含义是否与内核版本或内核配置有关?当它持有一个绝对值时,内核如何查找
当前\u任务
指针?

在两个内核版本中
当前\u任务
是一个用
每CPU定义的
宏定义的。因此差异很可能在于
kallsyms
如何输出这些变量。请参阅Linux内核的例如和
KALLSYMS\u ABSOLUTE\u perpu
配置选项。在这两个内核版本中
current\u task
都是用
DEFINE\u PER\u CPU
宏定义的。因此差异很可能在于
kallsyms
如何输出这些变量。请参阅Linux内核的例如和
KALLSYMS\u ABSOLUTE\u perpu
配置选项。