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
