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

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

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

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

31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * SUCH DAMAGE.
37 *
38 * @(#)vm_pager.h 8.4 (Berkeley) 1/12/94
39 * $Id: vm_pager.h,v 1.18 1999/01/21 08:29:12 dillon Exp $
39 * $Id: vm_pager.h,v 1.19 1999/01/21 10:15:47 dillon Exp $
40 */
41
42/*
43 * Pager routine interface definition.
44 */
45
46#ifndef _VM_PAGER_
47#define _VM_PAGER_
48
49#include <sys/queue.h>
50
51TAILQ_HEAD(pagerlst, vm_object);
52
53struct pagerops {
54 void (*pgo_init) __P((void)); /* Initialize pager. */
55 vm_object_t (*pgo_alloc) __P((void *, vm_ooffset_t, vm_prot_t, vm_ooffset_t)); /* Allocate pager. */
56 void (*pgo_dealloc) __P((vm_object_t)); /* Disassociate. */
57 int (*pgo_getpages) __P((vm_object_t, vm_page_t *, int, int)); /* Get (read) page. */
40 */
41
42/*
43 * Pager routine interface definition.
44 */
45
46#ifndef _VM_PAGER_
47#define _VM_PAGER_
48
49#include <sys/queue.h>
50
51TAILQ_HEAD(pagerlst, vm_object);
52
53struct pagerops {
54 void (*pgo_init) __P((void)); /* Initialize pager. */
55 vm_object_t (*pgo_alloc) __P((void *, vm_ooffset_t, vm_prot_t, vm_ooffset_t)); /* Allocate pager. */
56 void (*pgo_dealloc) __P((vm_object_t)); /* Disassociate. */
57 int (*pgo_getpages) __P((vm_object_t, vm_page_t *, int, int)); /* Get (read) page. */
58 int (*pgo_putpages) __P((vm_object_t, vm_page_t *, int, int, int *)); /* Put (write) page. */
58 void (*pgo_putpages) __P((vm_object_t, vm_page_t *, int, int, int *)); /* Put (write) page. */
59 boolean_t (*pgo_haspage) __P((vm_object_t, vm_pindex_t, int *, int *)); /* Does pager have page? */
60 void (*pgo_pageunswapped) __P((vm_page_t));
61};
62
63/*
64 * get/put return values
65 * OK operation was successful
66 * BAD specified data was out of the accepted range

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

93void vm_pager_bufferinit __P((void));
94void vm_pager_deallocate __P((vm_object_t));
95static __inline int vm_pager_get_pages __P((vm_object_t, vm_page_t *, int, int));
96static __inline boolean_t vm_pager_has_page __P((vm_object_t, vm_pindex_t, int *, int *));
97void vm_pager_init __P((void));
98vm_object_t vm_pager_object_lookup __P((struct pagerlst *, void *));
99vm_offset_t vm_pager_map_pages __P((vm_page_t *, int, boolean_t));
100vm_offset_t vm_pager_map_page __P((vm_page_t));
59 boolean_t (*pgo_haspage) __P((vm_object_t, vm_pindex_t, int *, int *)); /* Does pager have page? */
60 void (*pgo_pageunswapped) __P((vm_page_t));
61};
62
63/*
64 * get/put return values
65 * OK operation was successful
66 * BAD specified data was out of the accepted range

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

93void vm_pager_bufferinit __P((void));
94void vm_pager_deallocate __P((vm_object_t));
95static __inline int vm_pager_get_pages __P((vm_object_t, vm_page_t *, int, int));
96static __inline boolean_t vm_pager_has_page __P((vm_object_t, vm_pindex_t, int *, int *));
97void vm_pager_init __P((void));
98vm_object_t vm_pager_object_lookup __P((struct pagerlst *, void *));
99vm_offset_t vm_pager_map_pages __P((vm_page_t *, int, boolean_t));
100vm_offset_t vm_pager_map_page __P((vm_page_t));
101static __inline int vm_pager_put_pages __P((vm_object_t, vm_page_t *, int, boolean_t, int *));
102void vm_pager_sync __P((void));
103void vm_pager_unmap_pages __P((vm_offset_t, int));
104void vm_pager_unmap_page __P((vm_offset_t));
105
106static __inline int
107vm_pager_get_pages(
108 vm_object_t object,
109 vm_page_t *m,
110 int count,
111 int reqpage
112) {
113 return ((*pagertab[object->type]->pgo_getpages)(object, m, count, reqpage));
114}
115
101void vm_pager_sync __P((void));
102void vm_pager_unmap_pages __P((vm_offset_t, int));
103void vm_pager_unmap_page __P((vm_offset_t));
104
105static __inline int
106vm_pager_get_pages(
107 vm_object_t object,
108 vm_page_t *m,
109 int count,
110 int reqpage
111) {
112 return ((*pagertab[object->type]->pgo_getpages)(object, m, count, reqpage));
113}
114
116static __inline int
115static __inline void
117vm_pager_put_pages(
118 vm_object_t object,
119 vm_page_t *m,
120 int count,
121 int flags,
122 int *rtvals
123) {
116vm_pager_put_pages(
117 vm_object_t object,
118 vm_page_t *m,
119 int count,
120 int flags,
121 int *rtvals
122) {
124 return ((*pagertab[object->type]->pgo_putpages)(object, m, count, flags, rtvals));
123 (*pagertab[object->type]->pgo_putpages)
124 (object, m, count, flags, rtvals);
125}
126
127static __inline boolean_t
128vm_pager_has_page(
129 vm_object_t object,
130 vm_pindex_t offset,
131 int *before,
132 int *after

--- 23 unchanged lines hidden ---
125}
126
127static __inline boolean_t
128vm_pager_has_page(
129 vm_object_t object,
130 vm_pindex_t offset,
131 int *before,
132 int *after

--- 23 unchanged lines hidden ---