线程堆栈指针

时间:2011-07-14 23:00:54

标签: c pthreads threadx

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

2 个答案:

答案 0 :(得分:6)

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

要获得自己的堆栈指针,您可以随时执行以下操作:

mword sp;
asm volatile ("mov %esp, $0" : "=r"(sp));

答案 1 :(得分:4)

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