diff options
Diffstat (limited to 'sys/vm/vm_pager.h')
| -rw-r--r-- | sys/vm/vm_pager.h | 31 |
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 |
