vm_pager.h (76827) | vm_pager.h (79224) |
---|---|
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 76827 2001-05-19 01:28:09Z alfred $ | 39 * $FreeBSD: head/sys/vm/vm_pager.h 79224 2001-07-04 16:20:28Z dillon $ |
40 */ 41 42/* 43 * Pager routine interface definition. 44 */ 45 46#ifndef _VM_PAGER_ 47#define _VM_PAGER_ --- 71 unchanged lines hidden (view full) --- 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 | 40 */ 41 42/* 43 * Pager routine interface definition. 44 */ 45 46#ifndef _VM_PAGER_ 47#define _VM_PAGER_ --- 71 unchanged lines hidden (view full) --- 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 mtx_assert(&vm_mtx, MA_OWNED); | 127 GIANT_REQUIRED; 128 |
128 r = (*pagertab[object->type]->pgo_getpages)(object, m, count, reqpage); 129 if (r == VM_PAGER_OK && m[reqpage]->valid != VM_PAGE_BITS_ALL) { 130 vm_page_zero_invalid(m[reqpage], TRUE); 131 } | 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 } |
132 mtx_assert(&vm_mtx, MA_OWNED); | |
133 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, 142 int *rtvals 143) { | 133 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, 142 int *rtvals 143) { |
144 145 mtx_assert(&vm_mtx, MA_OWNED); | 144 GIANT_REQUIRED; |
146 (*pagertab[object->type]->pgo_putpages) 147 (object, m, count, flags, rtvals); | 145 (*pagertab[object->type]->pgo_putpages) 146 (object, m, count, flags, rtvals); |
148 mtx_assert(&vm_mtx, MA_OWNED); | |
149} 150 151/* 152 * vm_pager_haspage 153 * 154 * Check to see if an object's pager has the requested page. The 155 * object's pager will also set before and after to give the caller 156 * some idea of the number of pages before and after the requested --- 6 unchanged lines hidden (view full) --- 163vm_pager_has_page( 164 vm_object_t object, 165 vm_pindex_t offset, 166 int *before, 167 int *after 168) { 169 boolean_t ret; 170 | 147} 148 149/* 150 * vm_pager_haspage 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 --- 6 unchanged lines hidden (view full) --- 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; 168 |
171 mtx_assert(&vm_mtx, MA_OWNED); | 169 GIANT_REQUIRED; |
172 ret = (*pagertab[object->type]->pgo_haspage) 173 (object, offset, before, after); | 170 ret = (*pagertab[object->type]->pgo_haspage) 171 (object, offset, before, after); |
174 mtx_assert(&vm_mtx, MA_OWNED); | |
175 return (ret); 176} 177 178/* 179 * vm_pager_page_unswapped 180 * 181 * called at splvm() to destroy swap associated with the page. 182 * 183 * This function may not block. 184 */ 185 186static __inline void 187vm_pager_page_unswapped(vm_page_t m) 188{ | 172 return (ret); 173} 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 */ 182 183static __inline void 184vm_pager_page_unswapped(vm_page_t m) 185{ |
189 190 mtx_assert(&vm_mtx, MA_OWNED); | 186 GIANT_REQUIRED; |
191 if (pagertab[m->object->type]->pgo_pageunswapped) 192 (*pagertab[m->object->type]->pgo_pageunswapped)(m); | 187 if (pagertab[m->object->type]->pgo_pageunswapped) 188 (*pagertab[m->object->type]->pgo_pageunswapped)(m); |
193 mtx_assert(&vm_mtx, MA_OWNED); | |
194} 195 196#endif 197 198#endif /* _VM_PAGER_ */ | 189} 190 191#endif 192 193#endif /* _VM_PAGER_ */ |