On Mon, May 02, 2011 at 01:28:28PM +0100, Dimitris Papastamos wrote:
Each node manages a block of up to RBTREE_BLOCK_NUM registers. There can be no two nodes with overlapping blocks. Currently there is no check in the code to scream in case that ever happens. Each block has a base and top register, all others lie in between these registers. Note that variable length blocks aren't supported. So if you have an interval [8, 15] and only some of those registers actually exist on the device, the block will have the non-existent registers as zero. There is also no way of reporting that any of those non-existent registers were accessed/modified.
As we discussed verbally I'd really rather see this support variable length blocks and figure out (ideally at init time) which registers exist. This avoids all the fiddling around working out what to set the block size to which seems a lot clearer and cleaner.