--- Net2/vm/vm_pager.c 2018/04/24 18:03:57 1.1 +++ Net2/vm/vm_pager.c 2018/04/24 18:14:56 1.1.1.3 @@ -33,7 +33,8 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * @(#)vm_pager.c 7.4 (Berkeley) 5/7/91 + * from: @(#)vm_pager.c 7.4 (Berkeley) 5/7/91 + * vm_pager.c,v 1.4.2.1 1993/07/24 21:34:02 cgd Exp * * * Copyright (c) 1987, 1990 Carnegie-Mellon University. @@ -75,29 +76,34 @@ #include "vm_kern.h" #include "swappager.h" - #if NSWAPPAGER > 0 extern struct pagerops swappagerops; -#else -#define swappagerops NULL #endif #include "vnodepager.h" #if NVNODEPAGER > 0 extern struct pagerops vnodepagerops; -#else -#define vnodepagerops NULL #endif #include "devpager.h" #if NDEVPAGER > 0 extern struct pagerops devicepagerops; -#else -#define devicepagerops NULL #endif struct pagerops *pagertab[] = { +#if NSWAPPAGER > 0 &swappagerops, /* PG_SWAP */ +#else + NULL, /* no swappager */ +#endif +#if NVNODEPAGER > 0 &vnodepagerops, /* PG_VNODE */ +#else + NULL, /* no vnodepager */ +#endif +#if NDEVPAGER > 0 &devicepagerops, /* PG_DEV */ +#else + NULL, /* no devpager */ +#endif }; int npagers = sizeof (pagertab) / sizeof (pagertab[0]); @@ -125,7 +131,7 @@ vm_pager_init() * Initialize known pagers */ for (pgops = pagertab; pgops < &pagertab[npagers]; pgops++) - (*(*pgops)->pgo_init)(); + if (*pgops) (*(*pgops)->pgo_init)(); if (dfltpagerops == NULL) panic("no default pager"); } @@ -199,7 +205,7 @@ vm_pager_sync() struct pagerops **pgops; for (pgops = pagertab; pgops < &pagertab[npagers]; pgops++) - (*(*pgops)->pgo_putpage)(NULL, NULL, FALSE); + if (*pgops) (*(*pgops)->pgo_putpage)(NULL, NULL, FALSE); } vm_offset_t @@ -232,7 +238,6 @@ vm_pager_unmap_page(kva) m = PHYS_TO_VM_PAGE(pmap_extract(vm_map_pmap(pager_map), kva)); #endif - pmap_remove(vm_map_pmap(pager_map), kva, kva + PAGE_SIZE); kmem_free_wakeup(pager_map, kva, PAGE_SIZE); #ifdef DEBUG if (m->pagerowned)