Dervin Thunk
Dervin Thunk

Reputation: 20140

thread stack pointer

In Linux 2.6.32-32, is there a way to find the following information about a thread programmatically in a pthreads program? I need: run count, stack pointer, stack start/end, stack size, stack usage. Something like ThreadX, I guess, but within a program. Thanks.

Upvotes: 4

Views: 4200

Answers (2)

bdonlan
bdonlan

Reputation: 231451

As an addendum to BjoernD's answer, you can obtain context switch counts and total run time using the getrusage call with RUSAGE_THREAD. You cannot obtain information on the raw number of time slices executed; this information is not tracked in the first place.

Upvotes: 4

BjoernD
BjoernD

Reputation: 4780

  • pthread_getattr_np() should give you the pthread attributes of a thread
  • pthread_attr_getstack() returns the stack address and size
  • I don't know what you mean by run count.
  • For the stack pointer of a thread different than your current one you might need to use ptrace. Once you have it, you can use it to do the maths for determining how much of the stack is used.

For obtaining your own stack pointer you can always do something along the lines of:

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

Upvotes: 6

Related Questions