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 ---