160727d8bSWarner Losh /*- 2df8bae1dSRodney W. Grimes * Copyright (c) 1990 University of Utah. 326f9a767SRodney W. Grimes * Copyright (c) 1991 The Regents of the University of California. 426f9a767SRodney W. Grimes * All rights reserved. 5df8bae1dSRodney W. Grimes * 6df8bae1dSRodney W. Grimes * This code is derived from software contributed to Berkeley by 7df8bae1dSRodney W. Grimes * the Systems Programming Group of the University of Utah Computer 8df8bae1dSRodney W. Grimes * Science Department. 9df8bae1dSRodney W. Grimes * 10df8bae1dSRodney W. Grimes * Redistribution and use in source and binary forms, with or without 11df8bae1dSRodney W. Grimes * modification, are permitted provided that the following conditions 12df8bae1dSRodney W. Grimes * are met: 13df8bae1dSRodney W. Grimes * 1. Redistributions of source code must retain the above copyright 14df8bae1dSRodney W. Grimes * notice, this list of conditions and the following disclaimer. 15df8bae1dSRodney W. Grimes * 2. Redistributions in binary form must reproduce the above copyright 16df8bae1dSRodney W. Grimes * notice, this list of conditions and the following disclaimer in the 17df8bae1dSRodney W. Grimes * documentation and/or other materials provided with the distribution. 18*fbbd9655SWarner Losh * 3. Neither the name of the University nor the names of its contributors 19df8bae1dSRodney W. Grimes * may be used to endorse or promote products derived from this software 20df8bae1dSRodney W. Grimes * without specific prior written permission. 21df8bae1dSRodney W. Grimes * 22df8bae1dSRodney W. Grimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 23df8bae1dSRodney W. Grimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24df8bae1dSRodney W. Grimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25df8bae1dSRodney W. Grimes * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 26df8bae1dSRodney W. Grimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27df8bae1dSRodney W. Grimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28df8bae1dSRodney W. Grimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29df8bae1dSRodney W. Grimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30df8bae1dSRodney W. Grimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31df8bae1dSRodney W. Grimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32df8bae1dSRodney W. Grimes * SUCH DAMAGE. 33df8bae1dSRodney W. Grimes * 3426f9a767SRodney W. Grimes * from: @(#)swap_pager.h 7.1 (Berkeley) 12/5/90 35c3aac50fSPeter Wemm * $FreeBSD$ 3626f9a767SRodney W. Grimes */ 3726f9a767SRodney W. Grimes 383ccbf2d5SPoul-Henning Kamp #ifndef _VM_SWAP_PAGER_H_ 393ccbf2d5SPoul-Henning Kamp #define _VM_SWAP_PAGER_H_ 1 40df8bae1dSRodney W. Grimes 41e8865cafSJohn Baldwin typedef int32_t swblk_t; /* 42e8865cafSJohn Baldwin * swap offset. This is the type used to 43e8865cafSJohn Baldwin * address the "virtual swap device" and 44e8865cafSJohn Baldwin * therefore the maximum swap space is 45e8865cafSJohn Baldwin * 2^32 pages. 46e8865cafSJohn Baldwin */ 47e8865cafSJohn Baldwin 48e8865cafSJohn Baldwin struct buf; 49e8865cafSJohn Baldwin struct swdevt; 50e8865cafSJohn Baldwin typedef void sw_strategy_t(struct buf *, struct swdevt *); 51e8865cafSJohn Baldwin typedef void sw_close_t(struct thread *, struct swdevt *); 52e8865cafSJohn Baldwin 53e8865cafSJohn Baldwin /* 54e8865cafSJohn Baldwin * Swap device table 55e8865cafSJohn Baldwin */ 56e8865cafSJohn Baldwin struct swdevt { 57e8865cafSJohn Baldwin int sw_flags; 58e8865cafSJohn Baldwin int sw_nblks; 59e8865cafSJohn Baldwin int sw_used; 60e8865cafSJohn Baldwin dev_t sw_dev; 61e8865cafSJohn Baldwin struct vnode *sw_vp; 62e8865cafSJohn Baldwin void *sw_id; 63e8865cafSJohn Baldwin swblk_t sw_first; 64e8865cafSJohn Baldwin swblk_t sw_end; 65e8865cafSJohn Baldwin struct blist *sw_blist; 66e8865cafSJohn Baldwin TAILQ_ENTRY(swdevt) sw_list; 67e8865cafSJohn Baldwin sw_strategy_t *sw_strategy; 68e8865cafSJohn Baldwin sw_close_t *sw_close; 69e8865cafSJohn Baldwin }; 70e8865cafSJohn Baldwin 712cc718a1SKonstantin Belousov #define SW_UNMAPPED 0x01 72e8865cafSJohn Baldwin #define SW_CLOSING 0x04 73e8865cafSJohn Baldwin 7442c43e60SPoul-Henning Kamp #ifdef _KERNEL 7542c43e60SPoul-Henning Kamp 76cd41fc12SDavid Greenman extern int swap_pager_full; 778f60c087SPoul-Henning Kamp extern int swap_pager_avail; 78bf25be48SBruce Evans 79dda4f960SKonstantin Belousov struct xswdev; 80dda4f960SKonstantin Belousov int swap_dev_info(int name, struct xswdev *xs, char *devname, size_t len); 8111caded3SAlfred Perlstein void swap_pager_copy(vm_object_t, vm_object_t, vm_pindex_t, int); 8277d6fd97SKonstantin Belousov vm_pindex_t swap_pager_find_least(vm_object_t object, vm_pindex_t pindex); 8311caded3SAlfred Perlstein void swap_pager_freespace(vm_object_t, vm_pindex_t, vm_size_t); 8411caded3SAlfred Perlstein void swap_pager_swap_init(void); 858f60c087SPoul-Henning Kamp int swap_pager_isswapped(vm_object_t, struct swdevt *); 86b1fd102eSMark Johnston int swap_pager_nswapdev(void); 8711caded3SAlfred Perlstein int swap_pager_reserve(vm_object_t, vm_pindex_t, vm_size_t); 88567104a1SPoul-Henning Kamp void swap_pager_status(int *total, int *used); 890909f38aSPawel Jakub Dawidek void swapoff_all(void); 901c7c3c6aSMatthew Dillon 91a1287949SEivind Eklund #endif /* _KERNEL */ 923ccbf2d5SPoul-Henning Kamp #endif /* _VM_SWAP_PAGER_H_ */ 93