如何确定内核堆栈大小

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),但这取决于您的配置。

【讨论】:

以上是关于如何确定内核堆栈大小的主要内容,如果未能解决你的问题,请参考以下文章

ucos 怎样确定任务堆栈大小

为啥数组会引起nvlink警告:入口函数的堆栈大小不能静态确定

我是不是需要在 .NET 中显式确定堆栈的大小?

是否可以在 Rust 运行时确定大小的堆栈分配数组?

在 Visual Studio 2015 调试器中确定每一帧的堆栈大小

如何确定freertos任务的栈使用情况