DragonFly kernel List (threaded) for 2003-08
slab allocator process report.
I am making very good progress. There have been a bunch of minor
gotchas which are not documented in malloc()... things like malloc()
being expected to return non-NULL when 0 bytes are allocated (ahc driver
fails otherwise), and malloc() being expected to return power-of-2
aligned data for power-of-2 sized requests (the tty code fails in weird
ways otherwise). For the moment I am trying to make the slab allocator
work the same way that existing code expects malloc to.
I also had to track down a number of recursive deadlocks which occur
when kmem_map is removed. Basically it came down to kernel_map
needing a vm_map_entry in order to add new data to kernel_map, zalloc
running out and then recursing back into kernel_map.
I have successfully accomplished a buildworld on a SMP box with
kmem_map removed and the slab allocator in place, so I know I am getting
close. I expect I will be able to commit it all later this evening.
I still have to track down an ISA bounce buffer allocation problem
(occurs due to the large slab zone size I am using), and a case where
the lockmgr is being called from a FAST interrupt. I can deal with these
after the commit since the old malloc allocator will still be the default