Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/uebayasi-xip]: src/sys/uvm Clean up: move memory segment specific code f...



details:   https://anonhg.NetBSD.org/src/rev/ea0f4a58ff41
branches:  uebayasi-xip
changeset: 751677:ea0f4a58ff41
user:      uebayasi <uebayasi%NetBSD.org@localhost>
date:      Mon Apr 26 06:37:38 2010 +0000

description:
Clean up: move memory segment specific code from uvm_page_physload_common()
to uvm_page_physload().

diffstat:

 sys/uvm/uvm_page.c |  73 ++++++++++++++++++++++++++---------------------------
 1 files changed, 36 insertions(+), 37 deletions(-)

diffs (166 lines):

diff -r 2f5b1c7779bd -r ea0f4a58ff41 sys/uvm/uvm_page.c
--- a/sys/uvm/uvm_page.c        Mon Apr 26 06:19:03 2010 +0000
+++ b/sys/uvm/uvm_page.c        Mon Apr 26 06:37:38 2010 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: uvm_page.c,v 1.153.2.19 2010/04/26 06:19:06 uebayasi Exp $     */
+/*     $NetBSD: uvm_page.c,v 1.153.2.20 2010/04/26 06:37:38 uebayasi Exp $     */
 
 /*
  * Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -71,7 +71,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_page.c,v 1.153.2.19 2010/04/26 06:19:06 uebayasi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_page.c,v 1.153.2.20 2010/04/26 06:37:38 uebayasi Exp $");
 
 #include "opt_ddb.h"
 #include "opt_uvmhist.h"
@@ -749,7 +749,7 @@
  */
 
 static struct vm_physseg *
-uvm_page_physload_common(struct vm_physseg * const, int *,
+uvm_page_physload_common(struct vm_physseg * const, int,
     const paddr_t, const paddr_t, const paddr_t, const paddr_t, const int);
 #if 0
 static void
@@ -768,9 +768,30 @@
     paddr_t avail_end, int free_list)
 {
        struct vm_physseg *seg;
+       int lcv;
 
-       seg = uvm_page_physload_common(vm_physmem, &vm_nphysmem, start, end,
+       seg = uvm_page_physload_common(vm_physmem, vm_nphysmem, start, end,
            avail_start, avail_end, free_list);
+       KASSERT(seg != NULL);
+
+       seg->avail_start = avail_start;
+       seg->avail_end = avail_end;
+       /*
+        * check to see if this is a "preload" (i.e. uvm_page_init hasn't been
+        * called yet, so malloc is not available).
+        */
+       for (lcv = 0; lcv < vm_nphysmem; lcv++) {
+               if (vm_physmem[lcv].pgs)
+                       break;
+       }
+       if (lcv == vm_nphysmem) {
+               seg->pgs = NULL;
+               seg->endpg = NULL;
+               seg->free_list = free_list;     /* XXX */
+       } else {
+               panic("uvm_page_physload: tried to add RAM after uvm_page_init");
+       }
+       vm_nphysmem++;
        return seg;
 }
 
@@ -781,21 +802,22 @@
 {
        struct vm_physseg *seg;
 
-       seg = uvm_page_physload_common(vm_physdev, &vm_nphysdev, start, end,
+       seg = uvm_page_physload_common(vm_physdev, vm_nphysdev, start, end,
            avail_start, avail_end, free_list);
+       KASSERT(seg != NULL);
 
        for (paddr_t pf = start; pf < end; pf++)
                vm_page_device_mdpage_insert(pf);
+       vm_nphysdev++;
        return seg;
 }
 #endif
 
 static struct vm_physseg *
-uvm_page_physload_common(struct vm_physseg * const segs, int *rnsegs,
+uvm_page_physload_common(struct vm_physseg * const segs, int nsegs,
     const paddr_t start, const paddr_t end,
     const paddr_t avail_start, const paddr_t avail_end, const int free_list)
 {
-       int lcv;
        struct vm_physseg *ps;
 
        if (uvmexp.pagesize == 0)
@@ -804,41 +826,18 @@
                panic("uvm_page_physload: bad free list %d", free_list);
        if (start >= end)
                panic("uvm_page_physload: start >= end");
-       if (*rnsegs == VM_PHYSSEG_MAX)
+       if (nsegs == VM_PHYSSEG_MAX)
                panic("uvm_page_physload: unable to load physical memory "
                    "segment\n"
                    "\t%d segments allocated, ignoring 0x%llx -> 0x%llx\n"
                    "\tincrease VM_PHYSSEG_MAX\n",
                    VM_PHYSSEG_MAX, (long long)start, (long long)end);
 
-       ps = uvm_physseg_insert(segs, *rnsegs, start, end);
+       ps = uvm_physseg_insert(segs, nsegs, start, end);
+       KASSERT(ps != NULL);
        ps->start = start;
        ps->end = end;
 
-       if (segs == vm_physmem) {
-               ps->avail_start = avail_start;
-               ps->avail_end = avail_end;
-               /*
-                * check to see if this is a "preload" (i.e. uvm_page_init hasn't been
-                * called yet, so malloc is not available).
-                */
-               for (lcv = 0; lcv < *rnsegs; lcv++) {
-                       if (segs[lcv].pgs)
-                               break;
-               }
-               if (lcv == *rnsegs) {
-                       /* "preload" - can't use malloc */
-                       ps->pgs = NULL;
-                       ps->endpg = NULL;
-                       ps->free_list = free_list;      /* XXX */
-               } else {
-                       panic("uvm_page_physload: tried to add RAM after uvm_page_init");
-               }
-       } else {
-               /* XXX */
-       }
-
-       (*rnsegs)++;
        return ps;
 }
 
@@ -1150,7 +1149,7 @@
  * XXX Consider to allocate slots on-demand.
  */
 
-struct vm_page_md *vm_page_device_mdpage_lookup(struct vm_page *);
+static struct vm_page_md *vm_page_device_mdpage_lookup(struct vm_page *);
 
 struct vm_page_md *
 uvm_vm_page_to_md(struct vm_page *pg)
@@ -1199,7 +1198,7 @@
        return &vm_page_device_mdpage.locks[hash % MDPG_HASH_LOCK_CNT];
 }
 
-void
+static void
 vm_page_device_mdpage_insert(paddr_t pf)
 {
        u_int hash = (u_int)pf;
@@ -1217,7 +1216,7 @@
 }
 
 #if 0
-void
+static void
 vm_page_device_mdpage_remove(paddr_t pf)
 {
        u_int hash = (u_int)pf;
@@ -1245,7 +1244,7 @@
 }
 #endif
 
-struct vm_page_md *
+static struct vm_page_md *
 vm_page_device_mdpage_lookup(struct vm_page *pg)
 {
        paddr_t pf = VM_PAGE_DEVICE_TO_PHYS(pg) >> PAGE_SHIFT;



Home | Main Index | Thread Index | Old Index