summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_extent.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/subr_extent.c')
-rw-r--r--sys/kern/subr_extent.c41
1 files changed, 19 insertions, 22 deletions
diff --git a/sys/kern/subr_extent.c b/sys/kern/subr_extent.c
index 7d4d48b4da8..78fc592919e 100644
--- a/sys/kern/subr_extent.c
+++ b/sys/kern/subr_extent.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: subr_extent.c,v 1.25 2002/12/08 08:18:37 deraadt Exp $ */
+/* $OpenBSD: subr_extent.c,v 1.26 2004/12/26 21:22:13 miod Exp $ */
/* $NetBSD: subr_extent.c,v 1.7 1996/11/21 18:46:34 cgd Exp $ */
/*-
@@ -266,9 +266,10 @@ extent_destroy(ex)
#endif
/* Free all region descriptors in extent. */
- for (rp = ex->ex_regions.lh_first; rp != NULL; ) {
+ for (rp = LIST_FIRST(&ex->ex_regions);
+ rp != LIST_END(&ex->ex_regions); ) {
orp = rp;
- rp = rp->er_link.le_next;
+ rp = LIST_NEXT(rp, er_link);
LIST_REMOVE(orp, er_link);
extent_free_region_descriptor(ex, orp);
}
@@ -305,12 +306,12 @@ extent_insert_and_optimize(ex, start, size, flags, after, rp)
* descriptor overhead.
*/
if (((ex->ex_flags & EXF_NOCOALESCE) == 0) &&
- (ex->ex_regions.lh_first != NULL) &&
- ((start + size) == ex->ex_regions.lh_first->er_start)) {
+ !LIST_EMPTY(&ex->ex_regions) &&
+ ((start + size) == LIST_FIRST(&ex->ex_regions)->er_start)) {
/*
* We can coalesce. Prepend us to the first region.
*/
- ex->ex_regions.lh_first->er_start = start;
+ LIST_FIRST(&ex->ex_regions)->er_start = start;
extent_free_region_descriptor(ex, rp);
return;
}
@@ -346,8 +347,8 @@ extent_insert_and_optimize(ex, start, size, flags, after, rp)
/*
* Attempt to coalesce with the region after us.
*/
- if ((after->er_link.le_next != NULL) &&
- ((start + size) == after->er_link.le_next->er_start)) {
+ if (LIST_NEXT(after, er_link) != NULL &&
+ ((start + size) == LIST_NEXT(after, er_link)->er_start)) {
/*
* We can coalesce. Note that if we appended ourselves
* to the previous region, we exactly fit the gap, and
@@ -357,15 +358,15 @@ extent_insert_and_optimize(ex, start, size, flags, after, rp)
/*
* Yup, we can free it up.
*/
- after->er_end = after->er_link.le_next->er_end;
- nextr = after->er_link.le_next;
+ after->er_end = LIST_NEXT(after, er_link)->er_end;
+ nextr = LIST_NEXT(after, er_link);
LIST_REMOVE(nextr, er_link);
extent_free_region_descriptor(ex, nextr);
} else {
/*
* Nope, just prepend us to the next region.
*/
- after->er_link.le_next->er_start = start;
+ LIST_NEXT(after, er_link)->er_start = start;
}
extent_free_region_descriptor(ex, rp);
@@ -469,8 +470,7 @@ extent_alloc_region(ex, start, size, flags)
*/
last = NULL;
- for (rp = ex->ex_regions.lh_first; rp != NULL;
- rp = rp->er_link.le_next) {
+ LIST_FOREACH(rp, &ex->ex_regions, er_link) {
if (rp->er_start > end) {
/*
* We lie before this region and don't
@@ -643,8 +643,7 @@ extent_alloc_subregion(ex, substart, subend, size, alignment, skew, boundary,
* the subregion start, advancing the "last" pointer along
* the way.
*/
- for (rp = ex->ex_regions.lh_first; rp != NULL;
- rp = rp->er_link.le_next) {
+ LIST_FOREACH(rp, &ex->ex_regions, er_link) {
if (rp->er_start >= newstart)
break;
last = rp;
@@ -658,7 +657,7 @@ extent_alloc_subregion(ex, substart, subend, size, alignment, skew, boundary,
if (last != NULL && last->er_end >= newstart)
newstart = EXTENT_ALIGN((last->er_end + 1), alignment, skew);
- for (; rp != NULL; rp = rp->er_link.le_next) {
+ for (; rp != LIST_END(&ex->ex_regions); rp = LIST_NEXT(rp, er_link)) {
/*
* If the region pasts the subend, bail out and see
* if we fit against the subend.
@@ -950,8 +949,7 @@ extent_free(ex, start, size, flags)
* Cases 2, 3, and 4 require that the EXF_NOCOALESCE flag
* is not set.
*/
- for (rp = ex->ex_regions.lh_first; rp != NULL;
- rp = rp->er_link.le_next) {
+ LIST_FOREACH(rp, &ex->ex_regions, er_link) {
/*
* Save ourselves some comparisons; does the current
* region end before chunk to be freed begins? If so,
@@ -1041,7 +1039,7 @@ extent_alloc_region_descriptor(ex, flags)
if (ex->ex_flags & EXF_FIXED) {
struct extent_fixed *fex = (struct extent_fixed *)ex;
- while (fex->fex_freelist.lh_first == NULL) {
+ while (LIST_EMPTY(&fex->fex_freelist)) {
if (flags & EX_MALLOCOK)
goto alloc;
@@ -1053,7 +1051,7 @@ extent_alloc_region_descriptor(ex, flags)
"extnt", 0))
return (NULL);
}
- rp = fex->fex_freelist.lh_first;
+ rp = LIST_FIRST(&fex->fex_freelist);
LIST_REMOVE(rp, er_link);
/*
@@ -1142,8 +1140,7 @@ extent_print(ex)
db_printf("extent `%s' (0x%lx - 0x%lx), flags=%b\n", ex->ex_name,
ex->ex_start, ex->ex_end, ex->ex_flags, EXF_BITS);
- for (rp = ex->ex_regions.lh_first; rp != NULL;
- rp = rp->er_link.le_next)
+ LIST_FOREACH(rp, &ex->ex_regions, er_link)
db_printf(" 0x%lx - 0x%lx\n", rp->er_start, rp->er_end);
}
#endif