如何确定内核堆栈大小
Posted
技术标签:
【中文标题】如何确定内核堆栈大小【英文标题】:How to determine kernel stack size 【发布时间】:2012-09-09 20:23:24 【问题描述】:我需要确定内核模块内正在运行的 Linux 内核的堆栈大小。我知道宏 THREAD_SIZE 给出了给定架构的堆栈大小,但我不能使用它。由于编译和运行机器不同。有什么办法可以通过 proc 接口、内核 api 或导出的符号来做到这一点? 谢谢
【问题讨论】:
我认为依靠 THREAD_SIZE 是安全的。例如,如果您为 x86 编译模块,则可以确保 THREAD_SIZE 始终为 PAGE_SIZE @strkol 这就是整个问题。模块需要工作的内核是自定义内核。所以这种方法行不通。 【参考方案1】:试试这个
system("getconf _POSIX_THREAD_ATTR_STACKSIZE");
getconf -a
在控制台可能会输出系统变量列表
【讨论】:
谢谢@Nahuel,但我需要内核线程的堆栈大小而不是用户线程【参考方案2】:我认为您可以在架构的 thread_info.h 中找到它。 通常内核堆栈为 2 页 (8KB),但这取决于您的配置。
【讨论】:
以上是关于如何确定内核堆栈大小的主要内容,如果未能解决你的问题,请参考以下文章
为啥数组会引起nvlink警告:入口函数的堆栈大小不能静态确定