74 int pvn_getdirty(struct page *pp, int flags);
75 void pvn_vpzero(struct vnode *vp, u_offset_t vplen, size_t zbytes);
76 int pvn_getpages(
77 int (*getpage)(vnode_t *, u_offset_t, size_t, uint_t *,
78 struct page *[], size_t, struct seg *,
79 caddr_t, enum seg_rw, cred_t *),
80 struct vnode *vp, u_offset_t off, size_t len,
81 uint_t *protp, struct page **pl, size_t plsz,
82 struct seg *seg, caddr_t addr, enum seg_rw rw,
83 struct cred *cred);
84 void pvn_plist_init(struct page *pp, struct page **pl, size_t plsz,
85 u_offset_t off, size_t io_len, enum seg_rw rw);
86 void pvn_init(void);
87
88 /*
89 * The value is put in p_hash to identify marker pages. It is safe to
90 * test p_hash ==(!=) PVN_VPLIST_HASH_TAG even without holding p_selock.
91 */
92 #define PVN_VPLIST_HASH_TAG ((page_t *)-1)
93
94 /*
95 * When requesting pages from the getpage routines, pvn_getpages will
96 * allocate space to return PVN_GETPAGE_NUM pages which map PVN_GETPAGE_SZ
97 * worth of bytes. These numbers are chosen to be the minimum of the max's
98 * given in terms of bytes and pages.
99 */
100 #define PVN_MAX_GETPAGE_SZ 0x10000 /* getpage size limit */
101 #define PVN_MAX_GETPAGE_NUM 0x8 /* getpage page limit */
102
103 #if PVN_MAX_GETPAGE_SZ > PVN_MAX_GETPAGE_NUM * PAGESIZE
104
105 #define PVN_GETPAGE_SZ ptob(PVN_MAX_GETPAGE_NUM)
106 #define PVN_GETPAGE_NUM PVN_MAX_GETPAGE_NUM
107
108 #else
109
110 #define PVN_GETPAGE_SZ PVN_MAX_GETPAGE_SZ
111 #define PVN_GETPAGE_NUM btop(PVN_MAX_GETPAGE_SZ)
112
113 #endif
114
115 #endif /* _KERNEL */
116
117 #ifdef __cplusplus
118 }
119 #endif
120
121 #endif /* _VM_PVN_H */
|
74 int pvn_getdirty(struct page *pp, int flags);
75 void pvn_vpzero(struct vnode *vp, u_offset_t vplen, size_t zbytes);
76 int pvn_getpages(
77 int (*getpage)(vnode_t *, u_offset_t, size_t, uint_t *,
78 struct page *[], size_t, struct seg *,
79 caddr_t, enum seg_rw, cred_t *),
80 struct vnode *vp, u_offset_t off, size_t len,
81 uint_t *protp, struct page **pl, size_t plsz,
82 struct seg *seg, caddr_t addr, enum seg_rw rw,
83 struct cred *cred);
84 void pvn_plist_init(struct page *pp, struct page **pl, size_t plsz,
85 u_offset_t off, size_t io_len, enum seg_rw rw);
86 void pvn_init(void);
87
88 /*
89 * The value is put in p_hash to identify marker pages. It is safe to
90 * test p_hash ==(!=) PVN_VPLIST_HASH_TAG even without holding p_selock.
91 */
92 #define PVN_VPLIST_HASH_TAG ((page_t *)-1)
93
94 #endif /* _KERNEL */
95
96 #ifdef __cplusplus
97 }
98 #endif
99
100 #endif /* _VM_PVN_H */
|