static struct memtype *memtype_rb_exact_match(struct rb_root *root, u64 start, u64 end) { struct memtype *match; match = memtype_rb_lowest_match(root, start, end); while (match != NULL && match->start < end) { struct rb_node *node; if (match->start == start && match->end == end) return match; node = rb_next(&match->rb); if (node) match = container_of(node, struct memtype, rb); else match = NULL; }
static struct memtype *memtype_rb_match(struct rb_root *root, u64 start, u64 end, int match_type) { struct memtype *match; match = memtype_rb_lowest_match(root, start, end); while (match != NULL && match->start < end) { struct rb_node *node; if ((match_type == MEMTYPE_EXACT_MATCH) && (match->start == start) && (match->end == end)) return match; if ((match_type == MEMTYPE_END_MATCH) && (match->start < start) && (match->end == end)) return match; node = rb_next(&match->rb); if (node) match = container_of(node, struct memtype, rb); else match = NULL; }