1.9 KiB
libucontext
libucontext
is a library which provides the ucontext.h
C API. Unlike other implementations,
it faithfully follows the kernel process ABI when doing context swaps.
Notably, when combined with gcompat
, it provides a fully compatible implementation of the ucontext
functions that are ABI compatible with glibc.
Since version 0.13, for some architectures, you can deploy to bare metal using newlib via the
FREESTANDING=yes
make option. Systems which use a syscall cannot work this way. The table
below shows which architecture ports have been adapted to build with FREESTANDING=yes
.
supported architectures
Adding support for new architectures is easy, but you need to know assembly language to do it.
Architecture | Works on musl | Syscall | Supports FREESTANDING |
---|---|---|---|
aarch64 | ✓ | ✓ | |
arm | ✓ | ✓ | |
m68k | ✓ | ✓ | |
mips | ✓ | ✓ | |
mips64 | ✓ | ✓ | |
ppc | ✓ | ✓ | |
ppc64 | ✓ | ✓ | |
riscv64 | ✓ | ✓ | |
s390x | ✓ | ✓ | |
x86 | ✓ | ✓ | |
x86_64 | ✓ | ✓ |
building
libucontext
uses a simple makefile build system. You should define ARCH=
at build time, otherwise
the build system will attempt to guess using uname -m
.
$ make ARCH=x86_64
$ make ARCH=x86_64 check
$ make ARCH=x86_64 DESTDIR=out install