From owner-p4-projects@FreeBSD.ORG Fri Apr 1 16:33:15 2011 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 825371065E95; Fri, 1 Apr 2011 16:33:15 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 997A61065EC4 for ; Fri, 1 Apr 2011 16:33:11 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id 863128FC19 for ; Fri, 1 Apr 2011 16:33:11 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.4/8.14.4) with ESMTP id p31GXBel076026 for ; Fri, 1 Apr 2011 16:33:11 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.4/8.14.4/Submit) id p31GXBql076023 for perforce@freebsd.org; Fri, 1 Apr 2011 16:33:11 GMT (envelope-from jhb@freebsd.org) Date: Fri, 1 Apr 2011 16:33:11 GMT Message-Id: <201104011633.p31GXBql076023@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 190854 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Apr 2011 16:33:15 -0000 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) {