4.4BSD snapshot (revision 8.1); add 1993 to copyright
[unix-history] / usr / src / sys / vm / vm_pager.c
index d2e9fd3..b3370cd 100644 (file)
@@ -1,13 +1,13 @@
 /* 
 /* 
- * Copyright (c) 1991 Regents of the University of California.
- * All rights reserved.
+ * Copyright (c) 1991, 1993
+ *     The Regents of the University of California.  All rights reserved.
  *
  * This code is derived from software contributed to Berkeley by
  * The Mach Operating System project at Carnegie-Mellon University.
  *
  * %sccs.include.redist.c%
  *
  *
  * This code is derived from software contributed to Berkeley by
  * The Mach Operating System project at Carnegie-Mellon University.
  *
  * %sccs.include.redist.c%
  *
- *     @(#)vm_pager.c  7.7 (Berkeley) %G%
+ *     @(#)vm_pager.c  8.1 (Berkeley) %G%
  *
  *
  * Copyright (c) 1987, 1990 Carnegie-Mellon University.
  *
  *
  * Copyright (c) 1987, 1990 Carnegie-Mellon University.
  *     for builtin pagers.
  */
 
  *     for builtin pagers.
  */
 
-#include "param.h"
-#include "malloc.h"
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/malloc.h>
 
 
-#include "vm.h"
-#include "vm_page.h"
-#include "vm_kern.h"
+#include <vm/vm.h>
+#include <vm/vm_page.h>
+#include <vm/vm_kern.h>
 
 
-#include "swappager.h"
-#if NSWAPPAGER > 0
+#ifdef SWAPPAGER
 extern struct pagerops swappagerops;
 extern struct pagerops swappagerops;
-#define        swappagerops_p  &swappagerops
 #endif
 
 #endif
 
-#include "vnodepager.h"
-#if NVNODEPAGER > 0
+#ifdef VNODEPAGER
 extern struct pagerops vnodepagerops;
 extern struct pagerops vnodepagerops;
-#define        vnodepagerops_p &vnodepagerops
 #endif
 
 #endif
 
-#include "devpager.h"
-#if NDEVPAGER > 0
+#ifdef DEVPAGER
 extern struct pagerops devicepagerops;
 extern struct pagerops devicepagerops;
-#define        devicepagerops_p &devicepagerops
 #endif
 
 struct pagerops *pagertab[] = {
 #endif
 
 struct pagerops *pagertab[] = {
-#if NSWAPPAGER > 0
-       swappagerops_p,         /* PG_SWAP */
+#ifdef SWAPPAGER
+       &swappagerops,          /* PG_SWAP */
 #endif
 #endif
-#if NVNODEPAGER > 0
-       vnodepagerops_p,        /* PG_VNODE */
+#ifdef VNODEPAGER
+       &vnodepagerops,         /* PG_VNODE */
 #endif
 #endif
-#if NDEVPAGER > 0
-       devicepagerops_p,       /* PG_DEV */
+#ifdef DEVPAGER
+       &devicepagerops,        /* PG_DEV */
 #endif
 };
 int npagers = sizeof (pagertab) / sizeof (pagertab[0]);
 #endif
 };
 int npagers = sizeof (pagertab) / sizeof (pagertab[0]);
@@ -135,6 +130,7 @@ vm_pager_deallocate(pager)
        VM_PAGER_DEALLOC(pager);
 }
 
        VM_PAGER_DEALLOC(pager);
 }
 
+int
 vm_pager_get(pager, m, sync)
        vm_pager_t      pager;
        vm_page_t       m;
 vm_pager_get(pager, m, sync)
        vm_pager_t      pager;
        vm_page_t       m;
@@ -147,6 +143,7 @@ vm_pager_get(pager, m, sync)
        return(VM_PAGER_GET(pager, m, sync));
 }
 
        return(VM_PAGER_GET(pager, m, sync));
 }
 
+int
 vm_pager_put(pager, m, sync)
        vm_pager_t      pager;
        vm_page_t       m;
 vm_pager_put(pager, m, sync)
        vm_pager_t      pager;
        vm_page_t       m;
@@ -187,14 +184,14 @@ vm_pager_map_page(m)
        vm_offset_t kva;
 
 #ifdef DEBUG
        vm_offset_t kva;
 
 #ifdef DEBUG
-       if (!m->busy || m->active)
-               panic("vm_pager_map_page: page active or not busy");
-       if (m->pagerowned)
+       if ((m->flags & PG_BUSY) == 0)
+               panic("vm_pager_map_page: page not busy");
+       if (m->flags & PG_PAGEROWNED)
                printf("vm_pager_map_page: page %x already in pager\n", m);
 #endif
        kva = kmem_alloc_wait(pager_map, PAGE_SIZE);
 #ifdef DEBUG
                printf("vm_pager_map_page: page %x already in pager\n", m);
 #endif
        kva = kmem_alloc_wait(pager_map, PAGE_SIZE);
 #ifdef DEBUG
-       m->pagerowned = 1;
+       m->flags |= PG_PAGEROWNED;
 #endif
        pmap_enter(vm_map_pmap(pager_map), kva, VM_PAGE_TO_PHYS(m),
                   VM_PROT_DEFAULT, TRUE);
 #endif
        pmap_enter(vm_map_pmap(pager_map), kva, VM_PAGE_TO_PHYS(m),
                   VM_PROT_DEFAULT, TRUE);
@@ -213,8 +210,8 @@ vm_pager_unmap_page(kva)
        pmap_remove(vm_map_pmap(pager_map), kva, kva + PAGE_SIZE);
        kmem_free_wakeup(pager_map, kva, PAGE_SIZE);
 #ifdef DEBUG
        pmap_remove(vm_map_pmap(pager_map), kva, kva + PAGE_SIZE);
        kmem_free_wakeup(pager_map, kva, PAGE_SIZE);
 #ifdef DEBUG
-       if (m->pagerowned)
-               m->pagerowned = 0;
+       if (m->flags & PG_PAGEROWNED)
+               m->flags &= ~PG_PAGEROWNED;
        else
                printf("vm_pager_unmap_page: page %x(%x/%x) not owned\n",
                       m, kva, VM_PAGE_TO_PHYS(m));
        else
                printf("vm_pager_unmap_page: page %x(%x/%x) not owned\n",
                       m, kva, VM_PAGE_TO_PHYS(m));
@@ -241,6 +238,7 @@ vm_pager_lookup(list, handle)
  * This routine gains a reference to the object.
  * Explicit deallocation is necessary.
  */
  * This routine gains a reference to the object.
  * Explicit deallocation is necessary.
  */
+int
 pager_cache(object, should_cache)
        vm_object_t     object;
        boolean_t       should_cache;
 pager_cache(object, should_cache)
        vm_object_t     object;
        boolean_t       should_cache;