swap_pager.c (8f9110f6a1b1bd7517643f1bde7fe2db25727efd) | swap_pager.c (c1087c13240442926a34afa825b4dd3993868549) |
---|---|
1/* 2 * Copyright (c) 1994 John S. Dyson 3 * Copyright (c) 1990 University of Utah. 4 * Copyright (c) 1991, 1993 5 * The Regents of the University of California. All rights reserved. 6 * 7 * This code is derived from software contributed to Berkeley by 8 * the Systems Programming Group of the University of Utah Computer --- 25 unchanged lines hidden (view full) --- 34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 35 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 36 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 37 * SUCH DAMAGE. 38 * 39 * from: Utah $Hdr: swap_pager.c 1.4 91/04/30$ 40 * 41 * @(#)swap_pager.c 8.9 (Berkeley) 3/21/94 | 1/* 2 * Copyright (c) 1994 John S. Dyson 3 * Copyright (c) 1990 University of Utah. 4 * Copyright (c) 1991, 1993 5 * The Regents of the University of California. All rights reserved. 6 * 7 * This code is derived from software contributed to Berkeley by 8 * the Systems Programming Group of the University of Utah Computer --- 25 unchanged lines hidden (view full) --- 34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 35 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 36 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 37 * SUCH DAMAGE. 38 * 39 * from: Utah $Hdr: swap_pager.c 1.4 91/04/30$ 40 * 41 * @(#)swap_pager.c 8.9 (Berkeley) 3/21/94 |
42 * $Id: swap_pager.c,v 1.91 1998/03/01 04:18:14 dyson Exp $ | 42 * $Id: swap_pager.c,v 1.92 1998/03/07 21:36:54 dyson Exp $ |
43 */ 44 45/* 46 * Quick hack to page to dedicated partition(s). 47 * TODO: 48 * Add multiprocessor locks 49 * Deal with async writes in a better fashion 50 */ --- 123 unchanged lines hidden (view full) --- 174 daddr_t *rtval)); 175static void swap_pager_iodone __P((struct buf *)); 176static void swap_pager_iodone1 __P((struct buf *bp)); 177static void swap_pager_reclaim __P((void)); 178static void swap_pager_ridpages __P((vm_page_t *m, int count, 179 int reqpage)); 180static void swap_pager_setvalid __P((vm_object_t object, 181 vm_offset_t offset, int valid)); | 43 */ 44 45/* 46 * Quick hack to page to dedicated partition(s). 47 * TODO: 48 * Add multiprocessor locks 49 * Deal with async writes in a better fashion 50 */ --- 123 unchanged lines hidden (view full) --- 174 daddr_t *rtval)); 175static void swap_pager_iodone __P((struct buf *)); 176static void swap_pager_iodone1 __P((struct buf *bp)); 177static void swap_pager_reclaim __P((void)); 178static void swap_pager_ridpages __P((vm_page_t *m, int count, 179 int reqpage)); 180static void swap_pager_setvalid __P((vm_object_t object, 181 vm_offset_t offset, int valid)); |
182static void swapsizecheck __P((void)); | 182static __inline void swapsizecheck __P((void)); |
183 184#define SWAPLOW (vm_swap_size < (512 * btodb(PAGE_SIZE))) 185 | 183 184#define SWAPLOW (vm_swap_size < (512 * btodb(PAGE_SIZE))) 185 |
186static inline void | 186static __inline void |
187swapsizecheck() 188{ 189 if (vm_swap_size < 128 * btodb(PAGE_SIZE)) { 190 if (swap_pager_full == 0) 191 printf("swap_pager: out of swap space\n"); 192 swap_pager_full = 1; 193 } else if (vm_swap_size > 192 * btodb(PAGE_SIZE)) 194 swap_pager_full = 0; --- 136 unchanged lines hidden (view full) --- 331} 332 333/* 334 * returns disk block associated with pager and offset 335 * additionally, as a side effect returns a flag indicating 336 * if the block has been written 337 */ 338 | 187swapsizecheck() 188{ 189 if (vm_swap_size < 128 * btodb(PAGE_SIZE)) { 190 if (swap_pager_full == 0) 191 printf("swap_pager: out of swap space\n"); 192 swap_pager_full = 1; 193 } else if (vm_swap_size > 192 * btodb(PAGE_SIZE)) 194 swap_pager_full = 0; --- 136 unchanged lines hidden (view full) --- 331} 332 333/* 334 * returns disk block associated with pager and offset 335 * additionally, as a side effect returns a flag indicating 336 * if the block has been written 337 */ 338 |
339inline static daddr_t * | 339static __inline daddr_t * |
340swap_pager_diskaddr(object, pindex, valid) 341 vm_object_t object; 342 vm_pindex_t pindex; 343 int *valid; 344{ 345 register sw_blk_t swb; 346 int ix; 347 --- 432 unchanged lines hidden (view full) --- 780 /* 781 * Free swap management resources 782 */ 783 free(swb, M_VMPGDATA); 784 object->un_pager.swp.swp_blocks = NULL; 785 } 786} 787 | 340swap_pager_diskaddr(object, pindex, valid) 341 vm_object_t object; 342 vm_pindex_t pindex; 343 int *valid; 344{ 345 register sw_blk_t swb; 346 int ix; 347 --- 432 unchanged lines hidden (view full) --- 780 /* 781 * Free swap management resources 782 */ 783 free(swb, M_VMPGDATA); 784 object->un_pager.swp.swp_blocks = NULL; 785 } 786} 787 |
788static inline int | 788static __inline int |
789swap_pager_block_index(pindex) 790 vm_pindex_t pindex; 791{ 792 return (pindex / SWB_NPAGES); 793} 794 | 789swap_pager_block_index(pindex) 790 vm_pindex_t pindex; 791{ 792 return (pindex / SWB_NPAGES); 793} 794 |
795static inline int | 795static __inline int |
796swap_pager_block_offset(pindex) 797 vm_pindex_t pindex; 798{ 799 return (pindex % SWB_NPAGES); 800} 801 802/* 803 * swap_pager_haspage returns TRUE if the pager has data that has --- 740 unchanged lines hidden (view full) --- 1544 swp_clean_t spc; 1545 1546 while (spc = TAILQ_FIRST(&swap_pager_done)) { 1547 swap_pager_finish(spc); 1548 } 1549 return; 1550} 1551 | 796swap_pager_block_offset(pindex) 797 vm_pindex_t pindex; 798{ 799 return (pindex % SWB_NPAGES); 800} 801 802/* 803 * swap_pager_haspage returns TRUE if the pager has data that has --- 740 unchanged lines hidden (view full) --- 1544 swp_clean_t spc; 1545 1546 while (spc = TAILQ_FIRST(&swap_pager_done)) { 1547 swap_pager_finish(spc); 1548 } 1549 return; 1550} 1551 |
1552void | 1552static void |
1553swap_pager_finish(spc) 1554 register swp_clean_t spc; 1555{ 1556 int i, s, lastidx; 1557 vm_object_t object; 1558 vm_page_t *ma; 1559 1560 ma = spc->spc_m; --- 122 unchanged lines hidden --- | 1553swap_pager_finish(spc) 1554 register swp_clean_t spc; 1555{ 1556 int i, s, lastidx; 1557 vm_object_t object; 1558 vm_page_t *ma; 1559 1560 ma = spc->spc_m; --- 122 unchanged lines hidden --- |