This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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: PATCH RFA: Split stack [6/7]: libgcc


Hello Ian,

a couple of minor nits:

* Ian Lance Taylor wrote on Thu, Sep 23, 2010 at 01:20:12AM CEST:
> --- gcc/doc/libgcc.texi	(revision 164490)
> +++ gcc/doc/libgcc.texi	(working copy)

> +@subsection Split stack functions and variables
> +@deftypefn {Runtime Function} {void *} __splitstack_find (void *@var{segment_arg}, void *@var{sp}, size_t @var{len}, void **@var{next_segment}, void **@var{next_sp}, void **@var{initial_sp})

You can line-wrap @deftypefn lines using a single @ right before the
newline.

> +When using @option{-fsplit-stack}, this call may be used to iterate
> +over the stack segments.  It may be called like this:
> +@smallexample
> +  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.  */
> +    @}
> +@end smallexample
> +
> +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 @var{segment_arg} and @var{sp} arguments NULL, to pass
> +@var{next_segment}, @var{next_sp}, and @var{initial_sp} to a different
> +thread, and then to suspend one way or another.  A different thread
> +may run the subsequent @code{__splitstack_find} iterations.  Of
> +course, this will only work if the first thread is suspend while the

suspended

> +second thread is calling @code{__splitstack_find}.  If not, the second
> +thread could be looking at the stack while it is changing, and
> +anything could happen.
> +@end deftypefn
> +
> +@defvar __morestack_segments
> +@defvarx __morestack_current_segment
> +@defvarx __morestack_initial_sp
> +Internal variables used by the @option{-fsplit-stack} implementation.
> +@end defvar

Cheers,
Ralf


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