160727d8bSWarner Losh /*- 251369649SPedro F. Giffuni * SPDX-License-Identifier: BSD-3-Clause 351369649SPedro F. Giffuni * 4df8bae1dSRodney W. Grimes * Copyright (c) 1990 University of Utah. 526f9a767SRodney W. Grimes * Copyright (c) 1991 The Regents of the University of California. 626f9a767SRodney W. Grimes * All rights reserved. 7df8bae1dSRodney W. Grimes * 8df8bae1dSRodney W. Grimes * This code is derived from software contributed to Berkeley by 9df8bae1dSRodney W. Grimes * the Systems Programming Group of the University of Utah Computer 10df8bae1dSRodney W. Grimes * Science Department. 11df8bae1dSRodney W. Grimes * 12df8bae1dSRodney W. Grimes * Redistribution and use in source and binary forms, with or without 13df8bae1dSRodney W. Grimes * modification, are permitted provided that the following conditions 14df8bae1dSRodney W. Grimes * are met: 15df8bae1dSRodney W. Grimes * 1. Redistributions of source code must retain the above copyright 16df8bae1dSRodney W. Grimes * notice, this list of conditions and the following disclaimer. 17df8bae1dSRodney W. Grimes * 2. Redistributions in binary form must reproduce the above copyright 18df8bae1dSRodney W. Grimes * notice, this list of conditions and the following disclaimer in the 19df8bae1dSRodney W. Grimes * documentation and/or other materials provided with the distribution. 20fbbd9655SWarner Losh * 3. Neither the name of the University nor the names of its contributors 21df8bae1dSRodney W. Grimes * may be used to endorse or promote products derived from this software 22df8bae1dSRodney W. Grimes * without specific prior written permission. 23df8bae1dSRodney W. Grimes * 24df8bae1dSRodney W. Grimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 25df8bae1dSRodney W. Grimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26df8bae1dSRodney W. Grimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27df8bae1dSRodney W. Grimes * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 28df8bae1dSRodney W. Grimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 29df8bae1dSRodney W. Grimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30df8bae1dSRodney W. Grimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31df8bae1dSRodney W. Grimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32df8bae1dSRodney W. Grimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33df8bae1dSRodney W. Grimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34df8bae1dSRodney W. Grimes * SUCH DAMAGE. 35df8bae1dSRodney W. Grimes * 3626f9a767SRodney W. Grimes * from: @(#)swap_pager.h 7.1 (Berkeley) 12/5/90 37c3aac50fSPeter Wemm * $FreeBSD$ 3826f9a767SRodney W. Grimes */ 3926f9a767SRodney W. Grimes 403ccbf2d5SPoul-Henning Kamp #ifndef _VM_SWAP_PAGER_H_ 4134e2051fSMark Johnston #define _VM_SWAP_PAGER_H_ 42df8bae1dSRodney W. Grimes 4334e2051fSMark Johnston #include <sys/_types.h> 44e8865cafSJohn Baldwin 45e8865cafSJohn Baldwin struct buf; 46e8865cafSJohn Baldwin struct swdevt; 47cdccd11bSWarner Losh struct thread; 48e8865cafSJohn Baldwin typedef void sw_strategy_t(struct buf *, struct swdevt *); 49e8865cafSJohn Baldwin typedef void sw_close_t(struct thread *, struct swdevt *); 50e8865cafSJohn Baldwin 51e8865cafSJohn Baldwin /* 52e8865cafSJohn Baldwin * Swap device table 53e8865cafSJohn Baldwin */ 54e8865cafSJohn Baldwin struct swdevt { 55e8865cafSJohn Baldwin int sw_flags; 56e8865cafSJohn Baldwin int sw_nblks; 57e8865cafSJohn Baldwin int sw_used; 58e8865cafSJohn Baldwin dev_t sw_dev; 59e8865cafSJohn Baldwin struct vnode *sw_vp; 60e8865cafSJohn Baldwin void *sw_id; 6134e2051fSMark Johnston __daddr_t sw_first; 6234e2051fSMark Johnston __daddr_t sw_end; 63e8865cafSJohn Baldwin struct blist *sw_blist; 64e8865cafSJohn Baldwin TAILQ_ENTRY(swdevt) sw_list; 65e8865cafSJohn Baldwin sw_strategy_t *sw_strategy; 66e8865cafSJohn Baldwin sw_close_t *sw_close; 67e8865cafSJohn Baldwin }; 68e8865cafSJohn Baldwin 692cc718a1SKonstantin Belousov #define SW_UNMAPPED 0x01 70e8865cafSJohn Baldwin #define SW_CLOSING 0x04 71e8865cafSJohn Baldwin 7242c43e60SPoul-Henning Kamp #ifdef _KERNEL 7342c43e60SPoul-Henning Kamp 748f60c087SPoul-Henning Kamp extern int swap_pager_avail; 75183f8e1eSGleb Smirnoff extern int nsw_cluster_max; 76bf25be48SBruce Evans 77dda4f960SKonstantin Belousov struct xswdev; 78dda4f960SKonstantin Belousov int swap_dev_info(int name, struct xswdev *xs, char *devname, size_t len); 7911caded3SAlfred Perlstein void swap_pager_copy(vm_object_t, vm_object_t, vm_pindex_t, int); 8077d6fd97SKonstantin Belousov vm_pindex_t swap_pager_find_least(vm_object_t object, vm_pindex_t pindex); 81*baa1ccceSKonstantin Belousov void swap_pager_freespace(vm_object_t object, vm_pindex_t start, 82*baa1ccceSKonstantin Belousov vm_size_t size, vm_size_t *freed); 8311caded3SAlfred Perlstein void swap_pager_swap_init(void); 84b1fd102eSMark Johnston int swap_pager_nswapdev(void); 85686aa928SMark Johnston int swap_pager_reserve(vm_object_t, vm_pindex_t, vm_pindex_t); 86567104a1SPoul-Henning Kamp void swap_pager_status(int *total, int *used); 87ecfbddf0SKonstantin Belousov u_long swap_pager_swapped_pages(vm_object_t object); 880909f38aSPawel Jakub Dawidek void swapoff_all(void); 8928bc23abSKonstantin Belousov bool swap_pager_init_object(vm_object_t object, void *handle, 9028bc23abSKonstantin Belousov struct ucred *cred, vm_ooffset_t size, vm_ooffset_t offset); 91a1287949SEivind Eklund #endif /* _KERNEL */ 923ccbf2d5SPoul-Henning Kamp #endif /* _VM_SWAP_PAGER_H_ */ 93