Ok, my swapcontext based hypercall library seems to be working now...

https://github.com/justincormack/rumpfiber

The basic idea is it does not use pthreads, but uses cooperative
userspace threads using the widely available getcontext/swapcontext
calls which create multiple stacks within a single OS thread.

It is based on a mix of the Xen and minios code plus some of the
standard rumpuser code and not much new code at all.

Why?

1. For embedded systems that do not have a thread library and are single core
2. If you are running eg one network stack per core so threading is
not going to help
3. To cut down on amount of time spent on locks, as these become trivial.
4. If you have some other strange reason not to want  to run pthreads.
5. 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.
6. Not widely tested yet, but should be portable.

Why not?
1. No parallelism. The NetBSD network stack is being made much for
multi processor friendly, so you might lose performance.
2. Some stuff missing - I deleted eg the block device driver as it was
using threads, daemonize support etc. These are intended to be put
back, they just need some thought and were optional so were
temporarily removed.
3. Needs some namespacing cleanup. (not even sure if lib should be
called librumpuser as well).
4. build process too simple and no fun, just type make. Clearly needs
more options.

Justin

------------------------------------------------------------------------------
HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
Find What Matters Most in Your Big Data with HPCC Systems
Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
Leverages Graph Analysis for Fast Processing & Easy Data Exploration
http://p.sf.net/sfu/hpccsystems
_______________________________________________
rumpkernel-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rumpkernel-users

Reply via email to