Hi,

I added the first attempt at pthread support in rump kernel applications 
to rumprun by implementing the NetBSD _lwp_foo() interfaces using host 
swapcontext() for switching between threads.  The implementation 
connects the interfaces to some sort of scheduler-like thing running on 
the platform, and hence libpthread can block and wakeup threads.  We're 
actually more interested in getting pthreads running on rumpuser-xen, 
but as usual, it was easier to test things out in the comfort of userspace.

The only limitation I can think of is that the _lwp_foo() interfaces 
must be implemented by the same scheduling facility as the rump kernel 
hypercalls.  Otherwise you'll run into the old userspace thread library 
problem where making a blocking system call blocked all threads.  This 
shouldn't be a problem even for userspace now, with Justin's nicely 
timed release of the rumpfiber hypercall implementation (we didn't plan 
it that way).

implementation:
https://github.com/rumpkernel/rumprun/blob/master/_lwp.c

   - antti

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