/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.
This work was supported by Google Summer of Code 2007.
displaying useful output again:
db{0}> bt
cpu_Debugger(c1aa4800,c1aa8b1c,c1aa803c,1,c1aa48ec) at netbsd:cpu_Debugger+0x4
comintr(c1aa4800,cf38fc04,0,0,0) at netbsd:comintr+0x65c
DDB lost frame for netbsd:Xintr_ioapic_edge4+0xa8, trying 0xcf413ff4
Xintr_ioapic_edge4() at netbsd:Xintr_ioapic_edge4+0xa8
--- interrupt ---
--- switch to interrupt stack ---
cpu_idle(cf421e00,cf421e00,0,c0264950,cf421e00) at netbsd:cpu_idle+0x30
idle_loop(cf421e00,0,c01002d2,fbff,c01002d2) at netbsd:idle_loop+0x7a
- Use a RISC-style copyin optimised for pulling system call arguments.
In tests I have done on Intel hardware this removes any measurable
advantage to passing the syscall arguments in registers.
- Make structures CPU-cache friendly, as suggested and explained
by Andrew Doran. CACHE_LINE_SIZE definition is invented.
- Use current CPU if NULL is passed to the workqueue_enqueue().
- Implemented MI CPU index, which could be used as an index of array.
Removed linked-lists usage for work queues.
The roundup2() function avoids division, but works only with power of 2.
Reviewed by: <ad>, <yamt>, <tech-kern>
detach/join.
- Make mutex acquire spin for a short time, as done with spinlocks.
- Make the number of spins controllable with the env var PTHREAD_NSPINS.
- Reduce the amount of time that libpthread internal spinlocks are held.
- Rely more on the barrier effects of park/unpark to avoid taking spinlocks.
- Simplify the locking around pthreads and the global queues.
- Align per-thread sync data on a 128 byte boundary.
- Offset thread stacks by a small amount to try and reduce cache thrash.