Module Name: src Committed By: uebayasi Date: Thu Nov 11 15:47:43 UTC 2010
Modified Files: src/sys/uvm: uvm_page.c Log Message: Minor clean up. To generate a diff of this commit: cvs rdiff -u -r1.158 -r1.159 src/sys/uvm/uvm_page.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/uvm/uvm_page.c diff -u src/sys/uvm/uvm_page.c:1.158 src/sys/uvm/uvm_page.c:1.159 --- src/sys/uvm/uvm_page.c:1.158 Thu Nov 11 14:50:54 2010 +++ src/sys/uvm/uvm_page.c Thu Nov 11 15:47:43 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_page.c,v 1.158 2010/11/11 14:50:54 uebayasi Exp $ */ +/* $NetBSD: uvm_page.c,v 1.159 2010/11/11 15:47:43 uebayasi Exp $ */ /* * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -97,7 +97,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: uvm_page.c,v 1.158 2010/11/11 14:50:54 uebayasi Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uvm_page.c,v 1.159 2010/11/11 15:47:43 uebayasi Exp $"); #include "opt_ddb.h" #include "opt_uvmhist.h" @@ -367,8 +367,8 @@ static struct uvm_cpu boot_cpu; psize_t freepages, pagecount, bucketcount, n; struct pgflbucket *bucketarray, *cpuarray; - struct vm_page *pagearray; struct vm_physseg *seg; + struct vm_page *pagearray; int lcv; u_int i; paddr_t paddr; @@ -654,6 +654,7 @@ static bool uvm_page_physget_freelist(paddr_t *paddrp, int freelist) { + struct vm_physseg *seg; int lcv, x; /* pass 1: try allocating from a matching end */ @@ -663,22 +664,22 @@ for (lcv = 0 ; lcv < vm_nphysmem ; lcv++) #endif { + seg = VM_PHYSMEM_PTR(lcv); if (uvm.page_init_done == true) panic("uvm_page_physget: called _after_ bootstrap"); - if (vm_physmem[lcv].free_list != freelist) + if (seg->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) { - *paddrp = ctob(vm_physmem[lcv].avail_start); - vm_physmem[lcv].avail_start++; - vm_physmem[lcv].start++; + if (seg->avail_start == seg->start && + seg->avail_start < seg->avail_end) { + *paddrp = ctob(seg->avail_start); + seg->avail_start++; + seg->start++; /* nothing left? nuke it */ - if (vm_physmem[lcv].avail_start == - vm_physmem[lcv].end) { + if (seg->avail_start == seg->end) { if (vm_nphysmem == 1) panic("uvm_page_physget: out of memory!"); vm_nphysmem--; @@ -690,14 +691,13 @@ } /* try from rear */ - if (vm_physmem[lcv].avail_end == vm_physmem[lcv].end && - vm_physmem[lcv].avail_start < vm_physmem[lcv].avail_end) { - *paddrp = ctob(vm_physmem[lcv].avail_end - 1); - vm_physmem[lcv].avail_end--; - vm_physmem[lcv].end--; + if (seg->avail_end == seg->end && + seg->avail_start < seg->avail_end) { + *paddrp = ctob(seg->avail_end - 1); + seg->avail_end--; + seg->end--; /* nothing left? nuke it */ - if (vm_physmem[lcv].avail_end == - vm_physmem[lcv].start) { + if (seg->avail_end == seg->start) { if (vm_nphysmem == 1) panic("uvm_page_physget: out of memory!"); vm_nphysmem--; @@ -716,18 +716,19 @@ for (lcv = 0 ; lcv < vm_nphysmem ; lcv++) #endif { + seg = VM_PHYSMEM_PTR(lcv); /* any room in this bank? */ - if (vm_physmem[lcv].avail_start >= vm_physmem[lcv].avail_end) + if (seg->avail_start >= seg->avail_end) continue; /* nope */ - *paddrp = ctob(vm_physmem[lcv].avail_start); - vm_physmem[lcv].avail_start++; + *paddrp = ctob(seg->avail_start); + seg->avail_start++; /* truncate! */ - vm_physmem[lcv].start = vm_physmem[lcv].avail_start; + seg->start = seg->avail_start; /* nothing left? nuke it */ - if (vm_physmem[lcv].avail_start == vm_physmem[lcv].end) { + if (seg->avail_start == seg->end) { if (vm_nphysmem == 1) panic("uvm_page_physget: out of memory!"); vm_nphysmem--; @@ -798,7 +799,7 @@ */ for (lcv = 0 ; lcv < vm_nphysmem ; lcv++) { - if (vm_physmem[lcv].pgs) + if (VM_PHYSMEM_PTR(lcv)->pgs) break; } preload = (lcv == vm_nphysmem); @@ -820,15 +821,15 @@ #if (VM_PHYSSEG_STRAT == VM_PSTRAT_RANDOM) /* random: put it at the end (easy!) */ - ps = &vm_physmem[vm_nphysmem]; + ps = VM_PHYSMEM_PTR(vm_nphysmem); #elif (VM_PHYSSEG_STRAT == VM_PSTRAT_BSEARCH) { int x; /* sort by address for binary search */ for (lcv = 0 ; lcv < vm_nphysmem ; lcv++) - if (start < vm_physmem[lcv].start) + if (start < VM_PHYSMEM_PTR(lcv)->start) break; - ps = &vm_physmem[lcv]; + ps = VM_PHYSMEM_PTR(lcv); /* move back other entries, if necessary ... */ for (x = vm_nphysmem ; x > lcv ; x--) /* structure copy */ @@ -840,9 +841,9 @@ /* sort by largest segment first */ for (lcv = 0 ; lcv < vm_nphysmem ; lcv++) if ((end - start) > - (vm_physmem[lcv].end - vm_physmem[lcv].start)) + (VM_PHYSMEM_PTR(lcv)->end - VM_PHYSMEM_PTR(lcv)->start)) break; - ps = &vm_physmem[lcv]; + ps = VM_PHYSMEM_PTR(lcv); /* move back other entries, if necessary ... */ for (x = vm_nphysmem ; x > lcv ; x--) /* structure copy */ @@ -1879,7 +1880,7 @@ lcv = vm_physseg_find(atop(VM_PAGE_TO_PHYS(pg)), NULL); KASSERT(lcv != -1); - return (vm_physmem[lcv].free_list); + return (VM_PHYSMEM_PTR(lcv)->free_list); } #if defined(DDB) || defined(DEBUGPRINT) @@ -1986,7 +1987,7 @@ #endif "\n", "PAGE", "FLAG", "PQ", "UOBJECT", "UANON"); for (i = 0; i < vm_nphysmem; i++) { - for (pg = vm_physmem[i].pgs; pg <= vm_physmem[i].lastpg; pg++) { + for (pg = VM_PHYSMEM_PTR(i)->pgs; pg <= VM_PHYSMEM_PTR(i)->lastpg; pg++) { (*pr)("%18p %04x %04x %18p %18p", pg, pg->flags, pg->pqflags, pg->uobject, pg->uanon);