Skip to content

Commit

Permalink
manual/setjmp.texi: Improve clarity of Sys V context doc
Browse files Browse the repository at this point in the history
ChangeLog:

2014-03-13  Will Newton  <will.newton@linaro.org>

	* manual/setjmp.texi (System V contexts): Improve
	clarity and grammar of documentation.
  • Loading branch information
Will Newton committed Mar 13, 2014
1 parent 798212a commit 6f918f3
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 11 deletions.
5 changes: 5 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
2014-03-13 Will Newton <will.newton@linaro.org>

* manual/setjmp.texi (System V contexts): Improve
clarity and grammar of documentation.

2014-03-12 Paul Pluzhnikov <ppluzhnikov@google.com>

[BZ #16381]
Expand Down
21 changes: 10 additions & 11 deletions manual/setjmp.texi
Original file line number Diff line number Diff line change
Expand Up @@ -307,25 +307,24 @@ The function returns @code{0} if successful. Otherwise it returns
@end deftypefun

The @code{getcontext} function is similar to @code{setjmp} but it does
not provide an indication of whether the function returns for the first
time or whether the initialized context was used and the execution is
resumed at just that point. If this is necessary the user has to
determine this herself. This must be done carefully since the context
contains registers which might contain register variables. This is a
good situation to define variables with @code{volatile}.
not provide an indication of whether @code{getcontext} is returning for
the first time or whether an initialized context has just been restored.
If this is necessary the user has to determine this herself. This must
be done carefully since the context contains registers which might contain
register variables. This is a good situation to define variables with
@code{volatile}.

Once the context variable is initialized it can be used as is or it can
be modified. The latter is normally done to implement co-routines or
similar constructs. The @code{makecontext} function has to be
used to do that.
be modified using the @code{makecontext} function. The latter is normally
done when implementing co-routines or similar constructs.

@comment ucontext.h
@comment SVID
@deftypefun void makecontext (ucontext_t *@var{ucp}, void (*@var{func}) (void), int @var{argc}, @dots{})
@safety{@prelim{}@mtsafe{@mtsrace{:ucp}}@assafe{}@acsafe{}}
@c Linux-only implementations mostly in assembly, nothing unsafe.

The @var{ucp} parameter passed to the @code{makecontext} shall be
The @var{ucp} parameter passed to @code{makecontext} shall be
initialized by a call to @code{getcontext}. The context will be
modified in a way such that if the context is resumed it will start by
calling the function @code{func} which gets @var{argc} integer arguments
Expand Down Expand Up @@ -436,7 +435,7 @@ function fails it returns @code{-1} and sets @var{errno} accordingly.

The easiest way to use the context handling functions is as a
replacement for @code{setjmp} and @code{longjmp}. The context contains
on most platforms more information which might lead to less surprises
on most platforms more information which may lead to fewer surprises
but this also means using these functions is more expensive (besides
being less portable).

Expand Down

0 comments on commit 6f918f3

Please sign in to comment.