【问题标题】: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 这就是整个问题。模块需要工作的内核是自定义内核。所以这种方法行不通。

标签: linux-kernel kernel kernel-module


【解决方案1】:

试试这个

system("getconf _POSIX_THREAD_ATTR_STACKSIZE");

getconf -a在控制台可能会输出系统变量列表

【讨论】:

  • 谢谢@Nahuel,但我需要内核线程的堆栈大小而不是用户线程
【解决方案2】:

我认为您可以在架构的 thread_info.h 中找到它。 通常内核堆栈为 2 页 (8KB),但这取决于您的配置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 2010-09-16
    • 2010-12-13
    • 2014-06-26
    相关资源
    最近更新 更多