【发布时间】:2011-10-05 01:47:19
【问题描述】:
我正在使用内核堆栈的esp 值来计算进程描述符指针值。
根据ULK书,我只需要屏蔽esp的13个最低有效位即可获得thread_info结构的基地址。
我的测试是:
- 写一个内核模块,因为我需要获取内核堆栈的值
- 在内核init函数中,获取内核栈的值
- 使用以下公式获取CPU上运行的进程的进程描述符指针:
*((unsigned int*) esp & 0xffffe000) - 使用当前宏,打印出它的值。
我觉得 step3 的值应该和 step 4 的值一样。
但我的实验结果表明:有时它们相同,有时它们不同。有谁能解释为什么?还是我错过了什么?
【问题讨论】:
标签: linux-kernel