vm_pager.h (79224) | vm_pager.h (92029) |
---|---|
1/* 2 * Copyright (c) 1990 University of Utah. 3 * Copyright (c) 1991, 1993 4 * The Regents of the University of California. All rights reserved. 5 * 6 * This code is derived from software contributed to Berkeley by 7 * the Systems Programming Group of the University of Utah Computer 8 * Science Department. --- 22 unchanged lines hidden (view full) --- 31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 36 * SUCH DAMAGE. 37 * 38 * @(#)vm_pager.h 8.4 (Berkeley) 1/12/94 | 1/* 2 * Copyright (c) 1990 University of Utah. 3 * Copyright (c) 1991, 1993 4 * The Regents of the University of California. All rights reserved. 5 * 6 * This code is derived from software contributed to Berkeley by 7 * the Systems Programming Group of the University of Utah Computer 8 * Science Department. --- 22 unchanged lines hidden (view full) --- 31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 36 * SUCH DAMAGE. 37 * 38 * @(#)vm_pager.h 8.4 (Berkeley) 1/12/94 |
39 * $FreeBSD: head/sys/vm/vm_pager.h 79224 2001-07-04 16:20:28Z dillon $ | 39 * $FreeBSD: head/sys/vm/vm_pager.h 92029 2002-03-10 21:52:48Z eivind $ |
40 */ 41 42/* 43 * Pager routine interface definition. 44 */ 45 46#ifndef _VM_PAGER_ 47#define _VM_PAGER_ --- 30 unchanged lines hidden (view full) --- 78#define VM_PAGER_PEND 3 79#define VM_PAGER_ERROR 4 80#define VM_PAGER_AGAIN 5 81 82#define VM_PAGER_PUT_SYNC 0x1 83#define VM_PAGER_PUT_INVAL 0x2 84 85#ifdef _KERNEL | 40 */ 41 42/* 43 * Pager routine interface definition. 44 */ 45 46#ifndef _VM_PAGER_ 47#define _VM_PAGER_ --- 30 unchanged lines hidden (view full) --- 78#define VM_PAGER_PEND 3 79#define VM_PAGER_ERROR 4 80#define VM_PAGER_AGAIN 5 81 82#define VM_PAGER_PUT_SYNC 0x1 83#define VM_PAGER_PUT_INVAL 0x2 84 85#ifdef _KERNEL |
86 | |
87#ifdef MALLOC_DECLARE 88MALLOC_DECLARE(M_VMPGDATA); 89#endif 90 91extern vm_map_t pager_map; 92extern int pager_map_size; 93extern struct pagerops *pagertab[]; 94extern struct mtx pbuf_mtx; --- 14 unchanged lines hidden (view full) --- 109 110/* 111 * vm_page_get_pages: 112 * 113 * Retrieve pages from the VM system in order to map them into an object 114 * ( or into VM space somewhere ). If the pagein was successful, we 115 * must fully validate it. 116 */ | 86#ifdef MALLOC_DECLARE 87MALLOC_DECLARE(M_VMPGDATA); 88#endif 89 90extern vm_map_t pager_map; 91extern int pager_map_size; 92extern struct pagerops *pagertab[]; 93extern struct mtx pbuf_mtx; --- 14 unchanged lines hidden (view full) --- 108 109/* 110 * vm_page_get_pages: 111 * 112 * Retrieve pages from the VM system in order to map them into an object 113 * ( or into VM space somewhere ). If the pagein was successful, we 114 * must fully validate it. 115 */ |
117 | |
118static __inline int 119vm_pager_get_pages( 120 vm_object_t object, 121 vm_page_t *m, 122 int count, 123 int reqpage 124) { 125 int r; 126 127 GIANT_REQUIRED; 128 129 r = (*pagertab[object->type]->pgo_getpages)(object, m, count, reqpage); 130 if (r == VM_PAGER_OK && m[reqpage]->valid != VM_PAGE_BITS_ALL) { 131 vm_page_zero_invalid(m[reqpage], TRUE); 132 } | 116static __inline int 117vm_pager_get_pages( 118 vm_object_t object, 119 vm_page_t *m, 120 int count, 121 int reqpage 122) { 123 int r; 124 125 GIANT_REQUIRED; 126 127 r = (*pagertab[object->type]->pgo_getpages)(object, m, count, reqpage); 128 if (r == VM_PAGER_OK && m[reqpage]->valid != VM_PAGE_BITS_ALL) { 129 vm_page_zero_invalid(m[reqpage], TRUE); 130 } |
133 return(r); | 131 return (r); |
134} 135 136static __inline void 137vm_pager_put_pages( 138 vm_object_t object, 139 vm_page_t *m, 140 int count, 141 int flags, --- 9 unchanged lines hidden (view full) --- 151 * 152 * Check to see if an object's pager has the requested page. The 153 * object's pager will also set before and after to give the caller 154 * some idea of the number of pages before and after the requested 155 * page can be I/O'd efficiently. 156 * 157 * This routine does not have to be called at any particular spl. 158 */ | 132} 133 134static __inline void 135vm_pager_put_pages( 136 vm_object_t object, 137 vm_page_t *m, 138 int count, 139 int flags, --- 9 unchanged lines hidden (view full) --- 149 * 150 * Check to see if an object's pager has the requested page. The 151 * object's pager will also set before and after to give the caller 152 * some idea of the number of pages before and after the requested 153 * page can be I/O'd efficiently. 154 * 155 * This routine does not have to be called at any particular spl. 156 */ |
159 | |
160static __inline boolean_t 161vm_pager_has_page( 162 vm_object_t object, 163 vm_pindex_t offset, 164 int *before, 165 int *after 166) { 167 boolean_t ret; --- 6 unchanged lines hidden (view full) --- 174 175/* 176 * vm_pager_page_unswapped 177 * 178 * called at splvm() to destroy swap associated with the page. 179 * 180 * This function may not block. 181 */ | 157static __inline boolean_t 158vm_pager_has_page( 159 vm_object_t object, 160 vm_pindex_t offset, 161 int *before, 162 int *after 163) { 164 boolean_t ret; --- 6 unchanged lines hidden (view full) --- 171 172/* 173 * vm_pager_page_unswapped 174 * 175 * called at splvm() to destroy swap associated with the page. 176 * 177 * This function may not block. 178 */ |
182 | |
183static __inline void 184vm_pager_page_unswapped(vm_page_t m) 185{ 186 GIANT_REQUIRED; 187 if (pagertab[m->object->type]->pgo_pageunswapped) 188 (*pagertab[m->object->type]->pgo_pageunswapped)(m); 189} 190 | 179static __inline void 180vm_pager_page_unswapped(vm_page_t m) 181{ 182 GIANT_REQUIRED; 183 if (pagertab[m->object->type]->pgo_pageunswapped) 184 (*pagertab[m->object->type]->pgo_pageunswapped)(m); 185} 186 |
191#endif 192 | 187#endif /* _KERNEL */ |
193#endif /* _VM_PAGER_ */ | 188#endif /* _VM_PAGER_ */ |