95 /* segkpm support */
96 static caddr_t segmap_pagecreate_kpm(struct seg *, vnode_t *, u_offset_t,
97 struct smap *, enum seg_rw);
98 struct smap *get_smap_kpm(caddr_t, page_t **);
99
100 static struct seg_ops segmap_ops = {
101 .free = segmap_free,
102 .fault = segmap_fault,
103 .faulta = segmap_faulta,
104 .checkprot = segmap_checkprot,
105 .kluster = segmap_kluster,
106 .getprot = segmap_getprot,
107 .getoffset = segmap_getoffset,
108 .gettype = segmap_gettype,
109 .getvp = segmap_getvp,
110 .dump = segmap_dump,
111 .pagelock = segmap_pagelock,
112 .getmemid = segmap_getmemid,
113 .getpolicy = segmap_getpolicy,
114 .capable = segmap_capable,
115 .inherit = seg_inherit_notsup,
116 };
117
118 /*
119 * Private segmap routines.
120 */
121 static void segmap_unlock(struct hat *hat, struct seg *seg, caddr_t addr,
122 size_t len, enum seg_rw rw, struct smap *smp);
123 static void segmap_smapadd(struct smap *smp);
124 static struct smap *segmap_hashin(struct smap *smp, struct vnode *vp,
125 u_offset_t off, int hashid);
126 static void segmap_hashout(struct smap *smp);
127
128
129 /*
130 * Statistics for segmap operations.
131 *
132 * No explicit locking to protect these stats.
133 */
134 struct segmapcnt segmapcnt = {
135 { "fault", KSTAT_DATA_ULONG },
|
95 /* segkpm support */
96 static caddr_t segmap_pagecreate_kpm(struct seg *, vnode_t *, u_offset_t,
97 struct smap *, enum seg_rw);
98 struct smap *get_smap_kpm(caddr_t, page_t **);
99
100 static struct seg_ops segmap_ops = {
101 .free = segmap_free,
102 .fault = segmap_fault,
103 .faulta = segmap_faulta,
104 .checkprot = segmap_checkprot,
105 .kluster = segmap_kluster,
106 .getprot = segmap_getprot,
107 .getoffset = segmap_getoffset,
108 .gettype = segmap_gettype,
109 .getvp = segmap_getvp,
110 .dump = segmap_dump,
111 .pagelock = segmap_pagelock,
112 .getmemid = segmap_getmemid,
113 .getpolicy = segmap_getpolicy,
114 .capable = segmap_capable,
115 };
116
117 /*
118 * Private segmap routines.
119 */
120 static void segmap_unlock(struct hat *hat, struct seg *seg, caddr_t addr,
121 size_t len, enum seg_rw rw, struct smap *smp);
122 static void segmap_smapadd(struct smap *smp);
123 static struct smap *segmap_hashin(struct smap *smp, struct vnode *vp,
124 u_offset_t off, int hashid);
125 static void segmap_hashout(struct smap *smp);
126
127
128 /*
129 * Statistics for segmap operations.
130 *
131 * No explicit locking to protect these stats.
132 */
133 struct segmapcnt segmapcnt = {
134 { "fault", KSTAT_DATA_ULONG },
|