GNU Compiler Collection (GCC) Internals: Miscellaneous routines |
---|
Previous: Exception handling routines, Up: Libgcc [Contents][Index]
This function clears the instruction cache between beg and end.
When using -fsplit-stack, this call may be used to iterate over the stack segments. It may be called like this:
void *next_segment = NULL; void *next_sp = NULL; void *initial_sp = NULL; void *stack; size_t stack_size; while ((stack = __splitstack_find (next_segment, next_sp, &stack_size, &next_segment, &next_sp, &initial_sp)) != NULL) { /* Stack segment starts at stack and is stack_size bytes long. */ }
There is no way to iterate over the stack segments of a different
thread. However, what is permitted is for one thread to call this
with the segment_arg and sp arguments NULL, to pass
next_segment, next_sp, and initial_sp to a different
thread, and then to suspend one way or another. A different thread
may run the subsequent __splitstack_find
iterations. Of
course, this will only work if the first thread is suspended while the
second thread is calling __splitstack_find
. If not, the second
thread could be looking at the stack while it is changing, and
anything could happen.
Internal variables used by the -fsplit-stack implementation.