Page MenuHomeFreeBSD

D40400.id126509.diff
No OneTemporary

D40400.id126509.diff

diff --git a/sys/vm/vm_phys.c b/sys/vm/vm_phys.c
--- a/sys/vm/vm_phys.c
+++ b/sys/vm/vm_phys.c
@@ -678,6 +678,19 @@
}
}
+static vm_page_t
+vm_phys_enq_chunk(struct vm_freelist *fl, vm_page_t m, int order)
+{
+ int npages;
+
+ KASSERT(order >= 0 && order < VM_NFREEORDER,
+ ("%s: invalid order %d", __func__, order));
+
+ npages = 1 << order;
+ vm_freelist_add(fl, m, order, 1);
+ return (m + npages);
+}
+
/*
* Add the physical pages [m, m + npages) at the beginning of a power-of-two
* aligned and sized set to the specified free list.
@@ -705,12 +718,9 @@
("%s: page %p has unexpected order %d",
__func__, m, m->order));
order = fls(npages) - 1;
- KASSERT(order < VM_NFREEORDER,
- ("%s: order %d is out of range", __func__, order));
- vm_freelist_add(fl, m, order, tail);
- m += 1 << order;
- npages -= 1 << order;
- }
+ m = vm_phys_enq_chunk(fl, m, order);
+ npages -= 1 << order;
+ }
}
/*
@@ -741,10 +751,7 @@
("vm_phys_enq_range: page %p has unexpected order %d",
m, m->order));
order = ffs(npages) - 1;
- KASSERT(order < VM_NFREEORDER,
- ("vm_phys_enq_range: order %d is out of range", order));
- vm_freelist_add(fl, m, order, tail);
- m += 1 << order;
+ m = vm_phys_enq_chunk(fl, m, order);
npages -= 1 << order;
}
return (m);
@@ -1219,8 +1226,7 @@
KASSERT(seg == &vm_phys_segs[m->segind],
("%s: page range [%p,%p) spans multiple segments",
__func__, m_end - npages, m));
- vm_freelist_add(fl, m, order, 1);
- m += 1 << order;
+ m = vm_phys_enq_chunk(fl, m, order);
}
/* Free blocks of diminishing size. */
vm_phys_enq_beg(m, m_end - m, fl, 1);

File Metadata

Mime Type
text/plain
Expires
Thu, Aug 27, 11:36 AM (9 h, 10 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
37380253
Default Alt Text
D40400.id126509.diff (1 KB)

Event Timeline