On Mon, 2011-05-30 at 13:38 -0400, Mathieu Desnoyers wrote: > * Sasha Levin (levinsasha928@xxxxxxxxx) wrote: > > On Sun, 2011-05-29 at 22:54 -0400, Mathieu Desnoyers wrote: > > > Please note that what I currently have is a normal rbtree, not an > > > interval rbtree. Can you elaborate on your use-case so I can try to > > > figure out how we could augment it to support the interval rbtree you > > > need ? > > > > We don't need anything specific for interval rbtree. The rbtree used in > > the kernel provides augmentation functions for insert and erase (see > > rb_augment_insert() and rb_augment_erase_begin() + > > rb_augment_erase_end()). > > What they basically do is call a user-provided callback for each node > > from the newly inserted (or deepest after deletion) node up to the root > > of the tree. You can see our code at 'tools/kvm/util/rbtree-interval.c', > > basically all we need are the 2 augmentation functions I've mentioned > > above. > > Just a little question about Documentation/rbtree.txt: > > I see that find_lowest_match(lo, hi, node) seems to use ">" and "<" to > compare the lo value with the max_hi and node->lo. I think it would be > more natural to do range comparison functions with inclusive ranges (>= > and <=). Or maybe I am missing something about the way find_lowest_match > works ? It's just an implementation of an interval search() function. Since kernel rbtree users implement their own search() and insert() functions (look in our util/rbtree-interval.c) it shouldn't be a consideration in designing the tree - we (the users of urcu/rbtree) want to control the search code anyway. -- Sasha. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html