Date: Fri, 1 Apr 2011 16:33:11 GMT From: John Baldwin <jhb@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 190854 for review Message-ID: <201104011633.p31GXBql076023@skunkworks.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@190854?ac=10 Change 190854 by jhb@jhb_jhbbsd on 2011/04/01 01:02:49 More WIP on region regression tests. Affected files ... .. //depot/projects/pci/sys/modules/rman/rman.c#6 edit Differences ... ==== //depot/projects/pci/sys/modules/rman/rman.c#6 (text+ko) ==== @@ -295,6 +295,47 @@ assert_rman_ok(); } +struct region { + u_long start; + u_long end; +}; + +static void +assert_rman_regions(struct region *regions, int count) +{ + struct resource_i *i; + struct region *r; + u_long start; + + i = TAILQ_FIRST(&test.rm_list); + if (count == 0) { + KASSERT(i == NULL, ("non-empty rman")); + return; + } + + KASSERT(i != NULL, ("empty rman")); + r = regions; + start = r->start; + while (i != NULL) { + KASSERT(count != 0, ("resource beyond last region")); + KASSERT(i->r_start >= REGION_START && i->r_end <= REGION_END, + ("bad resource range")); + KASSERT(i->r_start == start, ("missing start of region")); + KASSERT(i->r_end <= r->end, ("resource overflows region")); + + if (i->r_end == r->end) { + /* Next region. */ + count--; + r++; + start = r->r_start; + } else + start = i->r_end + 1; + i = TAILQ_NEXT(i, r_link); + } + + KASSERT(count == 0, ("resources did not cover all regions")); +} + static void region_regression_tests(void) {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201104011633.p31GXBql076023>
