slab: Stop appending a uintptr_t to small objects
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 7 Nov 2016 00:20:13 +0000 (19:20 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 29 Nov 2016 16:27:40 +0000 (11:27 -0500)
commit9871244718039009d86c98cff000ed54e83a9237
treeb60a1298fc8eb6c7dc1df4595bad091fc446b508
parentd040d525437c65c6cd1edf498f69e6644c1309e2
slab: Stop appending a uintptr_t to small objects

Previously, when objects were in the slab layer (i.e., on a list in the
slab), they were constructed.  Because of that, we needed to append a
uinptr_t to small objects to form a linked list so as to not use the
constructed object.

Now that constructing happens above the slab layer, we can use the
memory of the object itself for the linked list.  Other than being
simpler, this saves some space and avoids fragmentation.  (consider a
256 byte item - we were adding 8 bytes, which would make it not pack
neatly into a page).

Note that small objects are all 'pro-touch', so we're allowed to use the
memory of the resource we're allocating.  This has always been true.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/include/slab.h
kern/src/slab.c