Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Platforms: Userspace fibers
There is a compile-time variant of the POSIX userspace hypercall layer, not a complete layer and shares much code. The difference is that it uses fibers (cooperative userspace threads) rather than kernel level pthreads.
To compile this, use
./buildrump.sh -V RUMPUSER_THREADS=fiber -V RUMP_CURLWP=hypercall
This should run on any POSIX platform that has support for the
setcontext calls, such as NetBSD, Linux glibc or FreeBSD. It should also be fairly easy to adapt to work on a bare metal platform as it has fewer dependencies.
- For embedded systems that do not have a thread library and are single core
- If you are running eg one network stack per core so threading is not going to help
- To cut down on amount of time spent on locks, as these become trivial.
- If you have some other strange reason not to want to run pthreads.
- If you want to run a 100% deterministic kernel it is a good starting point. If you adapt timestamps and random numbers to be reproducible it should be identical.
- No parallelism. The NetBSD network stack is being made much for multi processor friendly, so you might lose performance. The reduced locking may make up for this.
- Some stuff currently missing - currently does not have the
rumpuser_sproutines for remote calls, or virtual network devices. These issues should be resolved soon.