version 1.28, 2004/03/24 07:55:01 |
version 1.28.16.3, 2007/10/27 11:36:55 |
Line 137 struct uvm_pagerops { |
|
Line 137 struct uvm_pagerops { |
|
|
|
/* special non-standard fault processing */ |
/* special non-standard fault processing */ |
int (*pgo_fault)(struct uvm_faultinfo *, vaddr_t, struct vm_page **, |
int (*pgo_fault)(struct uvm_faultinfo *, vaddr_t, struct vm_page **, |
int, int, vm_fault_t, vm_prot_t, int); |
int, int, vm_prot_t, int); |
|
|
/* get/read pages */ |
/* get/read pages */ |
int (*pgo_get)(struct uvm_object *, voff_t, struct vm_page **, |
int (*pgo_get)(struct uvm_object *, voff_t, struct vm_page **, |
Line 150 struct uvm_pagerops { |
|
Line 150 struct uvm_pagerops { |
|
/* pager flags [mostly for flush] */ |
/* pager flags [mostly for flush] */ |
|
|
#define PGO_CLEANIT 0x001 /* write dirty pages to backing store */ |
#define PGO_CLEANIT 0x001 /* write dirty pages to backing store */ |
#define PGO_SYNCIO 0x002 /* if PGO_CLEANIT: use sync I/O? */ |
#define PGO_SYNCIO 0x002 /* use sync I/O */ |
#define PGO_DEACTIVATE 0x004 /* deactivate flushed pages */ |
#define PGO_DEACTIVATE 0x004 /* deactivate flushed pages */ |
#define PGO_FREE 0x008 /* free flushed pages */ |
#define PGO_FREE 0x008 /* free flushed pages */ |
/* if PGO_FREE is not set then the pages stay where they are. */ |
/* if PGO_FREE is not set then the pages stay where they are. */ |
Line 160 struct uvm_pagerops { |
|
Line 160 struct uvm_pagerops { |
|
#define PGO_BUSYFAIL 0x080 /* fail if a page is busy [put] */ |
#define PGO_BUSYFAIL 0x080 /* fail if a page is busy [put] */ |
#define PGO_OVERWRITE 0x200 /* pages will be overwritten before unlocked */ |
#define PGO_OVERWRITE 0x200 /* pages will be overwritten before unlocked */ |
#define PGO_PASTEOF 0x400 /* allow allocation of pages past EOF */ |
#define PGO_PASTEOF 0x400 /* allow allocation of pages past EOF */ |
|
#define PGO_NOBLOCKALLOC 0x800 /* backing block allocation is not needed */ |
|
#define PGO_NOTIMESTAMP 0x1000 /* don't mark object accessed/modified */ |
|
#define PGO_RECLAIM 0x2000 /* object is being reclaimed */ |
|
|
/* page we are not interested in getting */ |
/* page we are not interested in getting */ |
#define PGO_DONTCARE ((struct vm_page *) -1L) /* [get only] */ |
#define PGO_DONTCARE ((struct vm_page *) -1L) /* [get only] */ |
Line 167 struct uvm_pagerops { |
|
Line 170 struct uvm_pagerops { |
|
#ifdef _KERNEL |
#ifdef _KERNEL |
|
|
/* |
/* |
* handle inline options |
|
*/ |
|
|
|
#ifdef UVM_PAGER_INLINE |
|
#define PAGER_INLINE static __inline |
|
#else |
|
#define PAGER_INLINE /* nothing */ |
|
#endif /* UVM_PAGER_INLINE */ |
|
|
|
/* |
|
* prototypes |
* prototypes |
*/ |
*/ |
|
|
void uvm_pager_init(void); |
void uvm_pager_init(void); |
PAGER_INLINE struct vm_page *uvm_pageratop(vaddr_t); |
struct vm_page *uvm_pageratop(vaddr_t); |
vaddr_t uvm_pagermapin(struct vm_page **, int, int); |
vaddr_t uvm_pagermapin(struct vm_page **, int, int); |
void uvm_pagermapout(vaddr_t, int); |
void uvm_pagermapout(vaddr_t, int); |
|
|
|
extern size_t pager_map_size; |
|
|
/* Flags to uvm_pagermapin() */ |
/* Flags to uvm_pagermapin() */ |
#define UVMPAGER_MAPIN_WAITOK 0x01 /* it's okay to wait */ |
#define UVMPAGER_MAPIN_WAITOK 0x01 /* it's okay to wait */ |
#define UVMPAGER_MAPIN_READ 0x02 /* device -> host */ |
#define UVMPAGER_MAPIN_READ 0x02 /* device -> host */ |
#define UVMPAGER_MAPIN_WRITE 0x00 /* host -> device (pseudo flag) */ |
#define UVMPAGER_MAPIN_WRITE 0x00 /* host -> device (pseudo flag) */ |
|
|
/* |
|
* XXX |
|
* this is needed until the device strategy interface |
|
* is changed to do physically-addressed i/o. |
|
*/ |
|
|
|
#ifndef PAGER_MAP_SIZE |
|
#define PAGER_MAP_SIZE (16 * 1024 * 1024) |
|
#endif |
|
|
|
#endif /* _KERNEL */ |
#endif /* _KERNEL */ |
|
|
#endif /* _UVM_UVM_PAGER_H_ */ |
#endif /* _UVM_UVM_PAGER_H_ */ |