On Tue, May 03, 2011 at 12:21:25PM +0100, Mark Brown wrote:
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.
Yes, I will look into that. The block size will still need to be to set to determine the maximum size of the variable length block. Otherwise there is no way to determine if we need to allocate a new node for the rbtree or not.
Thanks, Dimitris