aboutsummaryrefslogtreecommitdiff
path: root/sys/vm/vm_pager.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/vm/vm_pager.h')
-rw-r--r--sys/vm/vm_pager.h31
1 files changed, 18 insertions, 13 deletions
diff --git a/sys/vm/vm_pager.h b/sys/vm/vm_pager.h
index 292c03da5ac5..699881ab51a3 100644
--- a/sys/vm/vm_pager.h
+++ b/sys/vm/vm_pager.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* from: @(#)vm_pager.h 7.2 (Berkeley) 4/20/91
- * $Id: vm_pager.h,v 1.2 1993/10/16 16:20:51 rgrimes Exp $
+ * $Id: vm_pager.h,v 1.6 1994/01/31 04:21:50 davidg Exp $
*/
/*
@@ -64,9 +64,10 @@ typedef struct pager_struct *vm_pager_t;
struct pagerops {
void (*pgo_init)(); /* initialize pager */
- vm_pager_t (*pgo_alloc)(); /* allocate pager */
+ vm_pager_t (*pgo_alloc)(caddr_t, vm_size_t, vm_prot_t, vm_offset_t); /* allocate pager */
void (*pgo_dealloc)(); /* disassociate */
int (*pgo_getpage)(); /* get (read) page */
+ int (*pgo_getmulti)(); /* get (read) multiple pages */
int (*pgo_putpage)(); /* put (write) page */
boolean_t (*pgo_haspage)(); /* does pager have page? */
};
@@ -77,29 +78,33 @@ struct pagerops {
* BAD specified data was out of the accepted range
* FAIL specified data was in range, but doesn't exist
* PEND operations was initiated but not completed
+ * TRYAGAIN operation will be successful in the future
*/
#define VM_PAGER_OK 0
#define VM_PAGER_BAD 1
#define VM_PAGER_FAIL 2
#define VM_PAGER_PEND 3
+#define VM_PAGER_TRYAGAIN 4
-#define VM_PAGER_ALLOC(h, s, p) (*(pg)->pg_ops->pgo_alloc)(h, s, p)
+#define VM_PAGER_ALLOC(h, s, p, o) (*(pg)->pg_ops->pgo_alloc)(h, s, p, o)
#define VM_PAGER_DEALLOC(pg) (*(pg)->pg_ops->pgo_dealloc)(pg)
#define VM_PAGER_GET(pg, m, s) (*(pg)->pg_ops->pgo_getpage)(pg, m, s)
+#define VM_PAGER_GET_MULTI(pg, m, c, r, s) (*(pg)->pg_ops->pgo_getmulti)(pg, m, c, r, s)
#define VM_PAGER_PUT(pg, m, s) (*(pg)->pg_ops->pgo_putpage)(pg, m, s)
#define VM_PAGER_HASPAGE(pg, o) (*(pg)->pg_ops->pgo_haspage)(pg, o)
#ifdef KERNEL
-vm_pager_t vm_pager_allocate();
-void vm_pager_deallocate();
-int vm_pager_get();
-int vm_pager_put();
-boolean_t vm_pager_has_page();
-
-vm_offset_t vm_pager_map_page();
-void vm_pager_unmap_page();
-vm_pager_t vm_pager_lookup();
-void vm_pager_sync();
+extern void vm_pager_init(void);
+extern vm_pager_t vm_pager_allocate(int, caddr_t, vm_size_t, vm_prot_t, vm_offset_t);
+extern void vm_pager_deallocate(vm_pager_t);
+struct vm_page;
+extern int vm_pager_get(vm_pager_t, struct vm_page *, boolean_t);
+extern int vm_pager_put(vm_pager_t, struct vm_page *, boolean_t);
+extern boolean_t vm_pager_has_page(vm_pager_t, vm_offset_t);
+extern void vm_pager_sync(void);
+extern vm_offset_t vm_pager_map_page(struct vm_page *);
+extern void vm_pager_unmap_page(vm_offset_t);
+extern vm_pager_t vm_pager_lookup(queue_head_t *, caddr_t);
extern struct pagerops *dfltpagerops;
#endif