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; 47e8865cafSJohn Baldwin typedef void sw_strategy_t(struct buf *, struct swdevt *); 48e8865cafSJohn Baldwin typedef void sw_close_t(struct thread *, struct swdevt *); 49e8865cafSJohn Baldwin 50e8865cafSJohn Baldwin /* 51e8865cafSJohn Baldwin * Swap device table 52e8865cafSJohn Baldwin */ 53e8865cafSJohn Baldwin struct swdevt { 54e8865cafSJohn Baldwin int sw_flags; 55e8865cafSJohn Baldwin int sw_nblks; 56e8865cafSJohn Baldwin int sw_used; 57e8865cafSJohn Baldwin dev_t sw_dev; 58e8865cafSJohn Baldwin struct vnode *sw_vp; 59e8865cafSJohn Baldwin void *sw_id; 6034e2051fSMark Johnston __daddr_t sw_first; 6134e2051fSMark Johnston __daddr_t sw_end; 62e8865cafSJohn Baldwin struct blist *sw_blist; 63e8865cafSJohn Baldwin TAILQ_ENTRY(swdevt) sw_list; 64e8865cafSJohn Baldwin sw_strategy_t *sw_strategy; 65e8865cafSJohn Baldwin sw_close_t *sw_close; 66e8865cafSJohn Baldwin }; 67e8865cafSJohn Baldwin 682cc718a1SKonstantin Belousov #define SW_UNMAPPED 0x01 69e8865cafSJohn Baldwin #define SW_CLOSING 0x04 70e8865cafSJohn Baldwin 7142c43e60SPoul-Henning Kamp #ifdef _KERNEL 7242c43e60SPoul-Henning Kamp 738f60c087SPoul-Henning Kamp extern int swap_pager_avail; 74bf25be48SBruce Evans 75dda4f960SKonstantin Belousov struct xswdev; 76dda4f960SKonstantin Belousov int swap_dev_info(int name, struct xswdev *xs, char *devname, size_t len); 7711caded3SAlfred Perlstein void swap_pager_copy(vm_object_t, vm_object_t, vm_pindex_t, int); 7877d6fd97SKonstantin Belousov vm_pindex_t swap_pager_find_least(vm_object_t object, vm_pindex_t pindex); 7911caded3SAlfred Perlstein void swap_pager_swap_init(void); 80b1fd102eSMark Johnston int swap_pager_nswapdev(void); 81*686aa928SMark Johnston int swap_pager_reserve(vm_object_t, vm_pindex_t, vm_pindex_t); 82567104a1SPoul-Henning Kamp void swap_pager_status(int *total, int *used); 83ecfbddf0SKonstantin Belousov u_long swap_pager_swapped_pages(vm_object_t object); 840909f38aSPawel Jakub Dawidek void swapoff_all(void); 8528bc23abSKonstantin Belousov bool swap_pager_init_object(vm_object_t object, void *handle, 8628bc23abSKonstantin Belousov struct ucred *cred, vm_ooffset_t size, vm_ooffset_t offset); 87a1287949SEivind Eklund #endif /* _KERNEL */ 883ccbf2d5SPoul-Henning Kamp #endif /* _VM_SWAP_PAGER_H_ */ 89