Deleted Added
full compact
vm_pager.h (3449) vm_pager.h (5455)
1
2/*
3 * Copyright (c) 1990 University of Utah.
4 * Copyright (c) 1991, 1993
5 * The Regents of the University of California. All rights reserved.
6 *
7 * This code is derived from software contributed to Berkeley by
8 * the Systems Programming Group of the University of Utah Computer

--- 23 unchanged lines hidden (view full) ---

32 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
33 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
36 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
37 * SUCH DAMAGE.
38 *
39 * @(#)vm_pager.h 8.4 (Berkeley) 1/12/94
1
2/*
3 * Copyright (c) 1990 University of Utah.
4 * Copyright (c) 1991, 1993
5 * The Regents of the University of California. All rights reserved.
6 *
7 * This code is derived from software contributed to Berkeley by
8 * the Systems Programming Group of the University of Utah Computer

--- 23 unchanged lines hidden (view full) ---

32 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
33 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
36 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
37 * SUCH DAMAGE.
38 *
39 * @(#)vm_pager.h 8.4 (Berkeley) 1/12/94
40 * $Id: vm_pager.h,v 1.3 1994/08/02 07:55:36 davidg Exp $
40 * $Id: vm_pager.h,v 1.4 1994/10/09 01:52:17 phk Exp $
41 */
42
43/*
44 * Pager routine interface definition.
45 * For BSD we use a cleaner version of the internal pager interface.
46 */
47
48#ifndef _VM_PAGER_
49#define _VM_PAGER_
50
51TAILQ_HEAD(pagerlst, pager_struct);
52
41 */
42
43/*
44 * Pager routine interface definition.
45 * For BSD we use a cleaner version of the internal pager interface.
46 */
47
48#ifndef _VM_PAGER_
49#define _VM_PAGER_
50
51TAILQ_HEAD(pagerlst, pager_struct);
52
53struct pager_struct {
53struct pager_struct {
54 TAILQ_ENTRY(pager_struct) pg_list; /* links for list management */
54 TAILQ_ENTRY(pager_struct) pg_list; /* links for list management */
55 caddr_t pg_handle; /* ext. handle (vp, dev, fp) */
56 int pg_type; /* type of pager */
57 int pg_flags; /* flags */
58 struct pagerops *pg_ops; /* pager operations */
59 void *pg_data; /* private pager data */
55 caddr_t pg_handle; /* ext. handle (vp, dev, fp) */
56 int pg_type; /* type of pager */
57 struct pagerops *pg_ops; /* pager operations */
58 void *pg_data; /* private pager data */
60};
61
62/* pager types */
63#define PG_DFLT -1
64#define PG_SWAP 0
65#define PG_VNODE 1
66#define PG_DEVICE 2
67
68/* flags */
69#define PG_CLUSTERGET 1
70#define PG_CLUSTERPUT 2
71
59};
60
61/* pager types */
62#define PG_DFLT -1
63#define PG_SWAP 0
64#define PG_VNODE 1
65#define PG_DEVICE 2
66
67/* flags */
68#define PG_CLUSTERGET 1
69#define PG_CLUSTERPUT 2
70
72struct pagerops {
73 void (*pgo_init) /* Initialize pager. */
74 __P((void));
75 vm_pager_t (*pgo_alloc) /* Allocate pager. */
76 __P((caddr_t, vm_size_t, vm_prot_t, vm_offset_t));
77 void (*pgo_dealloc) /* Disassociate. */
78 __P((vm_pager_t));
79 int (*pgo_getpage)
80 __P((vm_pager_t, vm_page_t, boolean_t));
81 int (*pgo_getpages) /* Get (read) page. */
82 __P((vm_pager_t, vm_page_t *, int, int, boolean_t));
83 int (*pgo_putpage)
84 __P((vm_pager_t, vm_page_t, boolean_t));
85 int (*pgo_putpages) /* Put (write) page. */
86 __P((vm_pager_t, vm_page_t *, int, boolean_t, int *));
87 boolean_t (*pgo_haspage) /* Does pager have page? */
88 __P((vm_pager_t, vm_offset_t));
71struct pagerops {
72 void (*pgo_init) __P((void)); /* Initialize pager. */
73 vm_pager_t(*pgo_alloc) __P((caddr_t, vm_size_t, vm_prot_t, vm_offset_t)); /* Allocate pager. */
74 void (*pgo_dealloc) __P((vm_pager_t)); /* Disassociate. */
75 int (*pgo_getpage) __P((vm_pager_t, vm_page_t, boolean_t));
76 int (*pgo_getpages) __P((vm_pager_t, vm_page_t *, int, int, boolean_t)); /* Get (read) page. */
77 int (*pgo_putpage) __P((vm_pager_t, vm_page_t, boolean_t));
78 int (*pgo_putpages) __P((vm_pager_t, vm_page_t *, int, boolean_t, int *)); /* Put (write) page. */
79 boolean_t(*pgo_haspage) __P((vm_pager_t, vm_offset_t)); /* Does pager have page? */
89};
90
91#define VM_PAGER_ALLOC(h, s, p, o) (*(pg)->pg_ops->pgo_alloc)(h, s, p, o)
92#define VM_PAGER_DEALLOC(pg) (*(pg)->pg_ops->pgo_dealloc)(pg)
93#define VM_PAGER_GET(pg, m, s) (*(pg)->pg_ops->pgo_getpage)(pg, m, s)
94#define VM_PAGER_GET_MULTI(pg, m, c, r, s) (*(pg)->pg_ops->pgo_getpages)(pg, m, c, r, s)
95#define VM_PAGER_PUT(pg, m, s) (*(pg)->pg_ops->pgo_putpage)(pg, m, s)
96#define VM_PAGER_PUT_MULTI(pg, m, c, s, rtval) (*(pg)->pg_ops->pgo_putpages)(pg, m, c, s, rtval)

--- 13 unchanged lines hidden (view full) ---

110#define VM_PAGER_FAIL 2
111#define VM_PAGER_PEND 3
112#define VM_PAGER_ERROR 4
113#define VM_PAGER_AGAIN 5
114
115#ifdef KERNEL
116extern struct pagerops *dfltpagerops;
117
80};
81
82#define VM_PAGER_ALLOC(h, s, p, o) (*(pg)->pg_ops->pgo_alloc)(h, s, p, o)
83#define VM_PAGER_DEALLOC(pg) (*(pg)->pg_ops->pgo_dealloc)(pg)
84#define VM_PAGER_GET(pg, m, s) (*(pg)->pg_ops->pgo_getpage)(pg, m, s)
85#define VM_PAGER_GET_MULTI(pg, m, c, r, s) (*(pg)->pg_ops->pgo_getpages)(pg, m, c, r, s)
86#define VM_PAGER_PUT(pg, m, s) (*(pg)->pg_ops->pgo_putpage)(pg, m, s)
87#define VM_PAGER_PUT_MULTI(pg, m, c, s, rtval) (*(pg)->pg_ops->pgo_putpages)(pg, m, c, s, rtval)

--- 13 unchanged lines hidden (view full) ---

101#define VM_PAGER_FAIL 2
102#define VM_PAGER_PEND 3
103#define VM_PAGER_ERROR 4
104#define VM_PAGER_AGAIN 5
105
106#ifdef KERNEL
107extern struct pagerops *dfltpagerops;
108
118vm_pager_t vm_pager_allocate
119 __P((int, caddr_t, vm_size_t, vm_prot_t, vm_offset_t));
120vm_page_t vm_pager_atop __P((vm_offset_t));
121void vm_pager_deallocate __P((vm_pager_t));
122int vm_pager_get_pages
123 __P((vm_pager_t, vm_page_t *, int, int, boolean_t));
124boolean_t vm_pager_has_page __P((vm_pager_t, vm_offset_t));
125void vm_pager_init __P((void));
126vm_pager_t vm_pager_lookup __P((struct pagerlst *, caddr_t));
127vm_offset_t vm_pager_map_pages __P((vm_page_t *, int, boolean_t));
128vm_offset_t vm_pager_map_page __P((vm_page_t));
129int vm_pager_put_pages
130 __P((vm_pager_t, vm_page_t *, int, boolean_t, int *));
131void vm_pager_sync __P((void));
132void vm_pager_unmap_pages __P((vm_offset_t, int));
133void vm_pager_unmap_page __P((vm_offset_t));
109vm_pager_t vm_pager_allocate __P((int, caddr_t, vm_size_t, vm_prot_t, vm_offset_t));
110vm_page_t vm_pager_atop __P((vm_offset_t));
111void vm_pager_deallocate __P((vm_pager_t));
112int vm_pager_get_pages __P((vm_pager_t, vm_page_t *, int, int, boolean_t));
113boolean_t vm_pager_has_page __P((vm_pager_t, vm_offset_t));
114void vm_pager_init __P((void));
115vm_pager_t vm_pager_lookup __P((struct pagerlst *, caddr_t));
116vm_offset_t vm_pager_map_pages __P((vm_page_t *, int, boolean_t));
117vm_offset_t vm_pager_map_page __P((vm_page_t));
118int vm_pager_put_pages __P((vm_pager_t, vm_page_t *, int, boolean_t, int *));
119void vm_pager_sync __P((void));
120void vm_pager_unmap_pages __P((vm_offset_t, int));
121void vm_pager_unmap_page __P((vm_offset_t));
134
122
135#define vm_pager_cancluster(p, b) ((p)->pg_flags & (b))
136
137/*
138 * XXX compat with old interface
139 */
140#define vm_pager_get(p, m, s) \
141({ \
142 vm_page_t ml[1]; \
143 ml[0] = (m); \
144 vm_pager_get_pages(p, ml, 1, 0, s); \

--- 4 unchanged lines hidden (view full) ---

149 int rtval; \
150 vm_page_t ml[1]; \
151 ml[0] = (m); \
152 vm_pager_put_pages(p, ml, 1, s, &rtval); \
153 rtval; \
154})
155#endif
156
123/*
124 * XXX compat with old interface
125 */
126#define vm_pager_get(p, m, s) \
127({ \
128 vm_page_t ml[1]; \
129 ml[0] = (m); \
130 vm_pager_get_pages(p, ml, 1, 0, s); \

--- 4 unchanged lines hidden (view full) ---

135 int rtval; \
136 vm_page_t ml[1]; \
137 ml[0] = (m); \
138 vm_pager_put_pages(p, ml, 1, s, &rtval); \
139 rtval; \
140})
141#endif
142
157#endif /* _VM_PAGER_ */
143#endif /* _VM_PAGER_ */