указатель стека потоков - PullRequest
4 голосов
/ 15 июля 2011

В Linux 2.6.32-32 есть ли способ программно найти следующую информацию о потоке в программе pthreads?Мне нужно: счетчик прогонов, указатель стека, начало / конец стека, размер стека, использование стека.Я думаю, что-то вроде ThreadX, но внутри программы.Благодаря.

Ответы [ 2 ]

6 голосов
/ 15 июля 2011
  • pthread_getattr_np () должен дать вам атрибуты pthread потока
  • pthread_attr_getstack () возвращает адрес стека и размер
  • Я не знаю, что вы подразумеваете под счетом пробежек.
  • Для указателя стека потока, отличного от текущего, вам может понадобиться ptrace . Получив его, вы можете использовать его для вычисления, чтобы определить, сколько стека используется.

Для получения собственного указателя стека вы всегда можете сделать что-то вроде:

mword sp;
asm volatile ("mov %esp, $0" : "=r"(sp));
4 голосов
/ 15 июля 2011

В качестве дополнения к ответу BjoernD, вы можете получить количество переключений контекста и общее время выполнения, используя вызов getrusage с RUSAGE_THREAD. Вы не можете получить информацию о необработанном количестве выполненных временных интервалов; эта информация не отслеживается в первую очередь.

...