This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Thread stack pointers


Delvin Defoe wrote:
Hi:

I am implementing a multi-thread, multiprocessor garbage collection
system for Java in gcc.  In the runtime system I need to determine the
stack base and stack top pointers for each mutator in order to scan
the stack for each mutator for pointers to live heap objects.   Any
idea how I can determine or compute these pointers?

Generic answer:
How about doing the same thing boehm-gc does?

For linux, you would have each thread is register with the GC when it is started. In this registration function you find the address of something on the stack of that thread, then look in /proc/self/maps to see what memory range contains that address. That range will be your stack bounds.

To find the stack top, send a signal to a thread, and then the stack top will be slightly above the address of an automatic variable of the signal handler function.

David Daney


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]