ucontext(3)

ucontext3

User thread context

Usage

#include <ucontext.h>

Library

Standard C Library (libc, -lc)

Overview

The 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.

The ucontext_t structure contains at least these fields:

ucontext_t *uc_link

context to assume when this one returns

sigset_t uc_sigmask

signals being blocked

stack_t uc_stack

stack area

mcontext_t uc_mcontext

saved registers

The uc_link field points to the context to resume when this context's entry point function returns. If uc_link is equal to NULL, then the process exits when this context returns.

The uc_mcontext field is machine-dependent and should be treated as opaque by portable applications.

The following functions are defined to manipulate ucontext_t structures:

int getcontext(ucontext_t *);

ucontext_t * getcontextx(void);

int setcontext(const ucontext_t *);

void makecontext(ucontext_t *, void *void, int, ...);

int swapcontext(ucontext_t *, const ucontext_t *);

Releases

61 releases since FreeBSD 4.7-RELEASE; the text changed 34 times.

  1. 4.7–4.11
  2. 5.0–5.2.1
  3. 5.3–6.3
  4. 6.4
  5. 7.0
  6. 7.1
  7. 7.2
  8. 7.3
  9. 7.4
  10. 8.0
  11. 8.1
  12. 8.2
  13. 8.3
  14. 8.4
  15. 9.0
  16. 9.1
  17. 9.2
  18. 9.3
  19. 10.0
  20. 10.1
  21. 10.2
  22. 10.3
  23. 10.4
  24. 11.0
  25. 11.1
  26. 11.2
  27. 11.3
  28. 11.4
  29. 12.0
  30. 12.1
  31. 12.2
  32. 12.3
  33. 12.4
  34. 13.0–13.2
  35. 13.3–16.0

Standards

The ucontext_t type conforms to X/Open System Interfaces and Headers Issue 5 (“XSH5”) and IEEE Std 1003.1-2001 (“POSIX.1”). The IEEE Std 1003.1-2008 (“POSIX.1”) revision removed the ucontext_t from the specification.

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.