Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/vm/swap_pager.h
39478 views
1
/*-
2
* SPDX-License-Identifier: BSD-3-Clause
3
*
4
* Copyright (c) 1990 University of Utah.
5
* Copyright (c) 1991 The Regents of the University of California.
6
* All rights reserved.
7
*
8
* This code is derived from software contributed to Berkeley by
9
* the Systems Programming Group of the University of Utah Computer
10
* Science Department.
11
*
12
* Redistribution and use in source and binary forms, with or without
13
* modification, are permitted provided that the following conditions
14
* are met:
15
* 1. Redistributions of source code must retain the above copyright
16
* notice, this list of conditions and the following disclaimer.
17
* 2. Redistributions in binary form must reproduce the above copyright
18
* notice, this list of conditions and the following disclaimer in the
19
* documentation and/or other materials provided with the distribution.
20
* 3. Neither the name of the University nor the names of its contributors
21
* may be used to endorse or promote products derived from this software
22
* without specific prior written permission.
23
*
24
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34
* SUCH DAMAGE.
35
*/
36
37
#ifndef _VM_SWAP_PAGER_H_
38
#define _VM_SWAP_PAGER_H_
39
40
#include <sys/_types.h>
41
42
struct buf;
43
struct swdevt;
44
struct thread;
45
typedef void sw_strategy_t(struct buf *, struct swdevt *);
46
typedef void sw_close_t(struct thread *, struct swdevt *);
47
48
/*
49
* Swap device table
50
*/
51
struct swdevt {
52
int sw_flags;
53
int sw_nblks;
54
int sw_used;
55
dev_t sw_dev;
56
struct vnode *sw_vp;
57
void *sw_id;
58
__daddr_t sw_first;
59
__daddr_t sw_end;
60
struct blist *sw_blist;
61
TAILQ_ENTRY(swdevt) sw_list;
62
sw_strategy_t *sw_strategy;
63
sw_close_t *sw_close;
64
};
65
66
#define SW_UNMAPPED 0x01
67
#define SW_CLOSING 0x04
68
69
#ifdef _KERNEL
70
71
extern bool swap_pager_almost_full;
72
extern int swap_pager_avail;
73
extern int nsw_cluster_max;
74
75
struct xswdev;
76
int swap_dev_info(int name, struct xswdev *xs, char *devname, size_t len);
77
void swap_pager_copy(vm_object_t, vm_object_t, vm_pindex_t, int);
78
bool swap_pager_scan_all_shadowed(vm_object_t object);
79
vm_pindex_t swap_pager_seek_data(vm_object_t object, vm_pindex_t pindex);
80
vm_pindex_t swap_pager_seek_hole(vm_object_t object, vm_pindex_t pindex);
81
void swap_pager_freespace(vm_object_t object, vm_pindex_t start,
82
vm_size_t size, vm_size_t *freed);
83
void swap_pager_swap_init(void);
84
int swap_pager_nswapdev(void);
85
int swap_pager_reserve(vm_object_t, vm_pindex_t, vm_pindex_t);
86
void swap_pager_status(int *total, int *used);
87
u_long swap_pager_swapped_pages(vm_object_t object);
88
void swapoff_all(void);
89
bool swap_pager_init_object(vm_object_t object, void *handle,
90
struct ucred *cred, vm_ooffset_t size, vm_ooffset_t offset);
91
#endif /* _KERNEL */
92
#endif /* _VM_SWAP_PAGER_H_ */
93
94