2002-09-11 21:39:21 +00:00
|
|
|
.\" Copyright (c) 2002 Packet Design, LLC.
|
|
|
|
.\" All rights reserved.
|
2002-12-04 15:47:41 +00:00
|
|
|
.\"
|
2002-09-11 21:39:21 +00:00
|
|
|
.\" Subject to the following obligations and disclaimer of warranty,
|
|
|
|
.\" use and redistribution of this software, in source or object code
|
|
|
|
.\" forms, with or without modifications are expressly permitted by
|
|
|
|
.\" Packet Design; provided, however, that:
|
2002-12-04 15:47:41 +00:00
|
|
|
.\"
|
2002-09-11 21:39:21 +00:00
|
|
|
.\" (i) Any and all reproductions of the source or object code
|
|
|
|
.\" must include the copyright notice above and the following
|
|
|
|
.\" disclaimer of warranties; and
|
|
|
|
.\" (ii) No rights are granted, in any manner or form, to use
|
|
|
|
.\" Packet Design trademarks, including the mark "PACKET DESIGN"
|
|
|
|
.\" on advertising, endorsements, or otherwise except as such
|
|
|
|
.\" appears in the above copyright notice or in the software.
|
2002-12-04 15:47:41 +00:00
|
|
|
.\"
|
2002-09-11 21:39:21 +00:00
|
|
|
.\" THIS SOFTWARE IS BEING PROVIDED BY PACKET DESIGN "AS IS", AND
|
|
|
|
.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, PACKET DESIGN MAKES NO
|
|
|
|
.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING
|
|
|
|
.\" THIS SOFTWARE, INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED
|
|
|
|
.\" WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
|
|
|
|
.\" OR NON-INFRINGEMENT. PACKET DESIGN DOES NOT WARRANT, GUARANTEE,
|
|
|
|
.\" OR MAKE ANY REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS
|
|
|
|
.\" OF THE USE OF THIS SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY,
|
|
|
|
.\" RELIABILITY OR OTHERWISE. IN NO EVENT SHALL PACKET DESIGN BE
|
|
|
|
.\" LIABLE FOR ANY DAMAGES RESULTING FROM OR ARISING OUT OF ANY USE
|
|
|
|
.\" OF THIS SOFTWARE, INCLUDING WITHOUT LIMITATION, ANY DIRECT,
|
|
|
|
.\" INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, PUNITIVE, OR CONSEQUENTIAL
|
|
|
|
.\" DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF
|
|
|
|
.\" USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY THEORY OF
|
|
|
|
.\" LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
|
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
|
|
|
.\" THE USE OF THIS SOFTWARE, EVEN IF PACKET DESIGN IS ADVISED OF
|
|
|
|
.\" THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
.\"
|
|
|
|
.\" $FreeBSD$
|
|
|
|
.\"
|
2002-12-04 15:47:41 +00:00
|
|
|
.Dd September 10, 2002
|
2002-09-11 21:39:21 +00:00
|
|
|
.Dt UCONTEXT 3
|
|
|
|
.Os
|
|
|
|
.Sh NAME
|
|
|
|
.Nm ucontext
|
|
|
|
.Nd user thread context
|
|
|
|
.Sh LIBRARY
|
|
|
|
.Lb libc
|
|
|
|
.Sh SYNOPSIS
|
|
|
|
.In ucontext.h
|
|
|
|
.Sh DESCRIPTION
|
|
|
|
The
|
|
|
|
.Vt ucontext_t
|
|
|
|
type is a structure type suitable for holding the context for a user
|
|
|
|
thread of execution.
|
|
|
|
A thread's context includes its stack, saved registers, and list of
|
|
|
|
blocked signals.
|
|
|
|
.Pp
|
|
|
|
The
|
|
|
|
.Vt ucontext_t
|
|
|
|
structure contains at least these fields:
|
|
|
|
.Pp
|
2002-12-04 15:47:41 +00:00
|
|
|
.Bl -tag -width ".Va mcontext_t\ \ uc_mcontext" -offset 3n -compact
|
|
|
|
.It Va "ucontext_t *uc_link"
|
|
|
|
context to assume when this one returns
|
|
|
|
.It Va "sigset_t uc_sigmask"
|
|
|
|
signals being blocked
|
|
|
|
.It Va "stack_t uc_stack"
|
|
|
|
stack area
|
|
|
|
.It Va "mcontext_t uc_mcontext"
|
|
|
|
saved registers
|
2002-09-11 21:39:21 +00:00
|
|
|
.El
|
|
|
|
.Pp
|
|
|
|
The
|
2002-12-04 15:47:41 +00:00
|
|
|
.Va uc_link
|
2002-09-11 21:39:21 +00:00
|
|
|
field points to the context to resume when this context's entry point
|
|
|
|
function returns.
|
|
|
|
If
|
2002-12-04 15:47:41 +00:00
|
|
|
.Va uc_link
|
2002-09-11 21:39:21 +00:00
|
|
|
is equal to
|
|
|
|
.Dv NULL ,
|
|
|
|
then the process exits when this context returns.
|
|
|
|
.Pp
|
|
|
|
The
|
2002-12-04 15:47:41 +00:00
|
|
|
.Va uc_mcontext
|
2002-09-11 21:39:21 +00:00
|
|
|
field is machine-dependent and should be treated as opaque by
|
|
|
|
portable applications.
|
|
|
|
.Pp
|
|
|
|
The following functions are defined to manipulate
|
|
|
|
.Vt ucontext_t
|
|
|
|
structures:
|
2002-12-04 15:47:41 +00:00
|
|
|
.Pp
|
|
|
|
.Bl -item -offset 3n -compact
|
|
|
|
.It
|
|
|
|
.Ft int
|
|
|
|
.Fn getcontext "ucontext_t *" ;
|
|
|
|
.It
|
|
|
|
.Ft int
|
|
|
|
.Fn setcontext "const ucontext_t *" ;
|
|
|
|
.It
|
|
|
|
.Ft void
|
|
|
|
.Fn makecontext "ucontext_t *" "void \*[lp]*\*[rp]\*[lp]void\*[rp]" int ... ;
|
|
|
|
.It
|
|
|
|
.Ft int
|
|
|
|
.Fn swapcontext "ucontext_t *" "const ucontext_t *" ;
|
|
|
|
.El
|
2002-09-11 21:39:21 +00:00
|
|
|
.Sh SEE ALSO
|
|
|
|
.Xr sigaltstack 2 ,
|
|
|
|
.Xr getcontext 3 ,
|
|
|
|
.Xr makecontext 3
|