Указатель стека потоков
В Linux 2.6.32-32 есть способ найти следующую информацию о потоке программно в pthreads
программа? Мне нужно: счетчик прогонов, указатель стека, начало / конец стека, размер стека, использование стека. Я думаю, что-то вроде ThreadX, но внутри программы. Благодарю.
2 ответа
Решение
- pthread_getattr_np() должна дать вам атрибуты pthread потока
- pthread_attr_getstack() возвращает адрес стека и размер
- Я не знаю, что вы имеете в виду под счетом пробега.
- Для указателя стека потока, отличного от текущего, вам может понадобиться использовать ptrace. Если у вас есть его, вы можете использовать его для вычисления, чтобы определить, сколько стека используется.
Для получения собственного указателя стека вы всегда можете сделать что-то вроде:
mword sp;
asm volatile ("mov %esp, $0" : "=r"(sp));
В качестве дополнения к ответу BjoernD вы можете получить количество переключений контекста и общее время выполнения, используя getrusage
позвонить с RUSAGE_THREAD
, Вы не можете получить информацию о необработанном количестве выполненных временных интервалов; эта информация не отслеживается в первую очередь.