I know that current_task
holds the address of task_struct *
pointer for each cpu.
However, when reading this symbol value in different kernel version, I got diverse result.
In 4.19.65
kernel, I grabbed it by cat /proc/kallsyms | grep current_task
and got:
0000000000015c40 A current_task
which means it is an absolute value.
In 4.20.13
kernel, I got:
ffffffffbea3a040 D current_task
which means it is in data section.
I used default config for 4.19.65
kernel. However, I have not got config file for 4.20.13
.
I'm wondering if the value meaning is related to kernel version or kernel configuration? When it holds an absolute value, how does kernel find current_task
pointer?