FreeBSD virtual memory subsystem code
swap_pager.h
Go to the documentation of this file.
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
* from: @(#)swap_pager.h 7.1 (Berkeley) 12/5/90
37
* $FreeBSD$
38
*/
39
40
#ifndef _VM_SWAP_PAGER_H_
41
#define _VM_SWAP_PAGER_H_
42
43
#include <sys/_types.h>
44
45
struct
buf;
46
struct
swdevt
;
47
struct
thread;
48
typedef
void
sw_strategy_t
(
struct
buf *,
struct
swdevt
*);
49
typedef
void
sw_close_t
(
struct
thread *,
struct
swdevt
*);
50
51
/*
52
* Swap device table
53
*/
54
struct
swdevt
{
55
int
sw_flags
;
56
int
sw_nblks
;
57
int
sw_used
;
58
dev_t
sw_dev
;
59
struct
vnode *
sw_vp
;
60
void
*
sw_id
;
61
__daddr_t
sw_first
;
62
__daddr_t
sw_end
;
63
struct
blist *
sw_blist
;
64
TAILQ_ENTRY
(
swdevt
) sw_list;
65
sw_strategy_t
*
sw_strategy
;
66
sw_close_t
*
sw_close
;
67
};
68
69
#define SW_UNMAPPED 0x01
70
#define SW_CLOSING 0x04
71
72
#ifdef _KERNEL
73
74
extern
int
swap_pager_avail
;
75
extern
int
nsw_cluster_max
;
76
77
struct
xswdev
;
78
int
swap_dev_info
(
int
name,
struct
xswdev
*xs,
char
*devname,
size_t
len);
79
void
swap_pager_copy
(
vm_object_t
,
vm_object_t
, vm_pindex_t,
int
);
80
vm_pindex_t
swap_pager_find_least
(
vm_object_t
object
, vm_pindex_t pindex);
81
void
swap_pager_swap_init
(
void
);
82
int
swap_pager_nswapdev
(
void
);
83
int
swap_pager_reserve
(
vm_object_t
, vm_pindex_t, vm_pindex_t);
84
void
swap_pager_status
(
int
*total,
int
*used);
85
u_long
swap_pager_swapped_pages
(
vm_object_t
object
);
86
void
swapoff_all
(
void
);
87
bool
swap_pager_init_object
(
vm_object_t
object
,
void
*handle,
88
struct
ucred *cred, vm_ooffset_t size, vm_ooffset_t offset);
89
#endif
/* _KERNEL */
90
#endif
/* _VM_SWAP_PAGER_H_ */
swdevt
Definition:
swap_pager.h:54
swdevt::sw_nblks
int sw_nblks
Definition:
swap_pager.h:56
swdevt::sw_end
__daddr_t sw_end
Definition:
swap_pager.h:62
swdevt::sw_blist
struct blist * sw_blist
Definition:
swap_pager.h:63
swdevt::sw_flags
int sw_flags
Definition:
swap_pager.h:55
swdevt::sw_strategy
sw_strategy_t * sw_strategy
Definition:
swap_pager.h:65
swdevt::sw_vp
struct vnode * sw_vp
Definition:
swap_pager.h:59
swdevt::sw_close
sw_close_t * sw_close
Definition:
swap_pager.h:66
swdevt::sw_id
void * sw_id
Definition:
swap_pager.h:60
swdevt::TAILQ_ENTRY
TAILQ_ENTRY(swdevt) sw_list
swdevt::sw_first
__daddr_t sw_first
Definition:
swap_pager.h:61
swdevt::sw_used
int sw_used
Definition:
swap_pager.h:57
swdevt::sw_dev
dev_t sw_dev
Definition:
swap_pager.h:58
vm_object
Definition:
vm_object.h:100
xswdev
Definition:
vm_param.h:96
swap_pager_reserve
int swap_pager_reserve(vm_object_t, vm_pindex_t, vm_pindex_t)
Definition:
swap_pager.c:985
swap_pager_nswapdev
int swap_pager_nswapdev(void)
Definition:
swap_pager.c:1774
swap_pager_status
void swap_pager_status(int *total, int *used)
Definition:
swap_pager.c:2631
swap_pager_find_least
vm_pindex_t swap_pager_find_least(vm_object_t object, vm_pindex_t pindex)
Definition:
swap_pager.c:2293
swap_dev_info
int swap_dev_info(int name, struct xswdev *xs, char *devname, size_t len)
Definition:
swap_pager.c:2640
sw_strategy_t
void sw_strategy_t(struct buf *, struct swdevt *)
Definition:
swap_pager.h:48
nsw_cluster_max
int nsw_cluster_max
Definition:
swap_pager.c:387
sw_close_t
void sw_close_t(struct thread *, struct swdevt *)
Definition:
swap_pager.h:49
swap_pager_copy
void swap_pager_copy(vm_object_t, vm_object_t, vm_pindex_t, int)
Definition:
swap_pager.c:1060
swap_pager_init_object
bool swap_pager_init_object(vm_object_t object, void *handle, struct ucred *cred, vm_ooffset_t size, vm_ooffset_t offset)
Definition:
swap_pager.c:668
swap_pager_swapped_pages
u_long swap_pager_swapped_pages(vm_object_t object)
Definition:
swap_pager.c:1790
swapoff_all
void swapoff_all(void)
Definition:
swap_pager.c:2601
swap_pager_swap_init
void swap_pager_swap_init(void)
Definition:
swap_pager.c:596
swap_pager_avail
int swap_pager_avail
vm
swap_pager.h
Generated by
1.9.3