Cleans up smallpool, adds locking
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 28 Jan 2015 18:22:09 +0000 (13:22 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 29 Jan 2015 02:44:35 +0000 (21:44 -0500)
commitb136bf7bc57b6a33fab461458c1a95c88b779f79
tree1bd3fc1870c989c9e2bc1d719a5e3c92b796af32
parentfc50d7efd4239730582301ec50f1dd99d153062c
Cleans up smallpool, adds locking

I tried various CAS schemes, but they don't work very well.  Using a
history counter, I was able to make get/pop lock-free, but not put/push.
The issue was that the pusher needs to have 'v' written by the time it
decrements, but it can't be sure of its slot when until decrement
succeeds.  It would work with only one pusher, or with an additional
'ready' flag per slot, similar to BCQs.
kern/include/smallidpool.h
kern/src/Kbuild
kern/src/smallidpool.c