4

在 Linux 2.6.32-32 中,有没有办法在程序中以编程方式找到有关线程的以下信息pthreads?我需要:运行计数、堆栈指针、堆栈开始/结束、堆栈大小、堆栈使用情况。我猜想像 ThreadX 之类的东西,但在一个程序中。谢谢。

4

2 回答 2

6
  • pthread_getattr_np()应该为您提供线程的 pthread 属性
  • pthread_attr_getstack()返回堆栈地址和大小
  • 我不知道你说的运行计数是什么意思。
  • 对于与当前线程不同的线程的堆栈指针,您可能需要使用ptrace。一旦你有了它,你就可以用它来计算确定使用了多少堆栈。

为了获得你自己的堆栈指针,你总是可以按照以下方式做一些事情:

mword sp;
asm volatile ("mov %esp, $0" : "=r"(sp));
于 2011-07-14T23:19:59.503 回答
4

作为 BjoernD 答案的附录,您可以使用getrusage调用获取上下文切换计数和总运行时间RUSAGE_THREAD。您无法获得有关已执行时间片的原始数量的信息;首先不会跟踪此信息。

于 2011-07-14T23:27:17.910 回答