Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/uvm in uvm_page_physget(), try the vm_physmem[] chunks i...
details: https://anonhg.NetBSD.org/src/rev/e505af939b7c
branches: trunk
changeset: 479007:e505af939b7c
user: drochner <drochner%NetBSD.org@localhost>
date: Wed Dec 01 16:08:32 1999 +0000
description:
in uvm_page_physget(), try the vm_physmem[] chunks in the order of their
"free_list" attributes, to save DMA memory
diffstat:
sys/uvm/uvm_page.c | 26 +++++++++++++++++++++++---
1 files changed, 23 insertions(+), 3 deletions(-)
diffs (55 lines):
diff -r a6a189324fbd -r e505af939b7c sys/uvm/uvm_page.c
--- a/sys/uvm/uvm_page.c Wed Dec 01 15:15:29 1999 +0000
+++ b/sys/uvm/uvm_page.c Wed Dec 01 16:08:32 1999 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: uvm_page.c,v 1.27 1999/11/30 18:34:23 thorpej Exp $ */
+/* $NetBSD: uvm_page.c,v 1.28 1999/12/01 16:08:32 drochner Exp $ */
/*
* Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -457,9 +457,13 @@
* => return false if out of memory.
*/
-boolean_t
-uvm_page_physget(paddrp)
+/* subroutine: try to allocate from memory chunks on the specified freelist */
+static boolean_t uvm_page_physget_freelist __P((paddr_t *, int));
+
+static boolean_t
+uvm_page_physget_freelist(paddrp, freelist)
paddr_t *paddrp;
+ int freelist;
{
int lcv, x;
@@ -474,6 +478,9 @@
if (vm_physmem[lcv].pgs)
panic("vm_page_physget: called _after_ bootstrap");
+ if (vm_physmem[lcv].free_list != freelist)
+ continue;
+
/* try from front */
if (vm_physmem[lcv].avail_start == vm_physmem[lcv].start &&
vm_physmem[lcv].avail_start < vm_physmem[lcv].avail_end) {
@@ -544,6 +551,19 @@
return (FALSE); /* whoops! */
}
+
+boolean_t
+uvm_page_physget(paddrp)
+ paddr_t *paddrp;
+{
+ int i;
+
+ /* try in the order of freelist preference */
+ for (i = 0; i < VM_NFREELIST; i++)
+ if (uvm_page_physget_freelist(paddrp, i) == TRUE)
+ return (TRUE);
+ return (FALSE);
+}
#endif /* PMAP_STEAL_MEMORY */
/*
Home |
Main Index |
Thread Index |
Old Index