160727d8bSWarner Losh /*- 2*51369649SPedro F. Giffuni * SPDX-License-Identifier: BSD-3-Clause 3*51369649SPedro 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_ 413ccbf2d5SPoul-Henning Kamp #define _VM_SWAP_PAGER_H_ 1 42df8bae1dSRodney W. Grimes 43e8865cafSJohn Baldwin typedef int32_t swblk_t; /* 44e8865cafSJohn Baldwin * swap offset. This is the type used to 45e8865cafSJohn Baldwin * address the "virtual swap device" and 46e8865cafSJohn Baldwin * therefore the maximum swap space is 47e8865cafSJohn Baldwin * 2^32 pages. 48e8865cafSJohn Baldwin */ 49e8865cafSJohn Baldwin 50e8865cafSJohn Baldwin struct buf; 51e8865cafSJohn Baldwin struct swdevt; 52e8865cafSJohn Baldwin typedef void sw_strategy_t(struct buf *, struct swdevt *); 53e8865cafSJohn Baldwin typedef void sw_close_t(struct thread *, struct swdevt *); 54e8865cafSJohn Baldwin 55e8865cafSJohn Baldwin /* 56e8865cafSJohn Baldwin * Swap device table 57e8865cafSJohn Baldwin */ 58e8865cafSJohn Baldwin struct swdevt { 59e8865cafSJohn Baldwin int sw_flags; 60e8865cafSJohn Baldwin int sw_nblks; 61e8865cafSJohn Baldwin int sw_used; 62e8865cafSJohn Baldwin dev_t sw_dev; 63e8865cafSJohn Baldwin struct vnode *sw_vp; 64e8865cafSJohn Baldwin void *sw_id; 65e8865cafSJohn Baldwin swblk_t sw_first; 66e8865cafSJohn Baldwin swblk_t sw_end; 67e8865cafSJohn Baldwin struct blist *sw_blist; 68e8865cafSJohn Baldwin TAILQ_ENTRY(swdevt) sw_list; 69e8865cafSJohn Baldwin sw_strategy_t *sw_strategy; 70e8865cafSJohn Baldwin sw_close_t *sw_close; 71e8865cafSJohn Baldwin }; 72e8865cafSJohn Baldwin 732cc718a1SKonstantin Belousov #define SW_UNMAPPED 0x01 74e8865cafSJohn Baldwin #define SW_CLOSING 0x04 75e8865cafSJohn Baldwin 7642c43e60SPoul-Henning Kamp #ifdef _KERNEL 7742c43e60SPoul-Henning Kamp 788f60c087SPoul-Henning Kamp extern int swap_pager_avail; 79bf25be48SBruce Evans 80dda4f960SKonstantin Belousov struct xswdev; 81dda4f960SKonstantin Belousov int swap_dev_info(int name, struct xswdev *xs, char *devname, size_t len); 8211caded3SAlfred Perlstein void swap_pager_copy(vm_object_t, vm_object_t, vm_pindex_t, int); 8377d6fd97SKonstantin Belousov vm_pindex_t swap_pager_find_least(vm_object_t object, vm_pindex_t pindex); 8411caded3SAlfred Perlstein void swap_pager_freespace(vm_object_t, vm_pindex_t, vm_size_t); 8511caded3SAlfred Perlstein void swap_pager_swap_init(void); 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