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
