77 static faultcode_t segmap_faulta(struct seg *seg, caddr_t addr);
78 static int segmap_checkprot(struct seg *seg, caddr_t addr, size_t len,
79 uint_t prot);
80 static int segmap_kluster(struct seg *seg, caddr_t addr, ssize_t);
81 static int segmap_getprot(struct seg *seg, caddr_t addr, size_t len,
82 uint_t *protv);
83 static u_offset_t segmap_getoffset(struct seg *seg, caddr_t addr);
84 static int segmap_gettype(struct seg *seg, caddr_t addr);
85 static int segmap_getvp(struct seg *seg, caddr_t addr, struct vnode **vpp);
86 static void segmap_dump(struct seg *seg);
87 static int segmap_pagelock(struct seg *seg, caddr_t addr, size_t len,
88 struct page ***ppp, enum lock_type type,
89 enum seg_rw rw);
90 static int segmap_getmemid(struct seg *seg, caddr_t addr, memid_t *memidp);
91
92 /* segkpm support */
93 static caddr_t segmap_pagecreate_kpm(struct seg *, vnode_t *, u_offset_t,
94 struct smap *, enum seg_rw);
95 struct smap *get_smap_kpm(caddr_t, page_t **);
96
97 static struct seg_ops segmap_ops = {
98 .free = segmap_free,
99 .fault = segmap_fault,
100 .faulta = segmap_faulta,
101 .checkprot = segmap_checkprot,
102 .kluster = segmap_kluster,
103 .getprot = segmap_getprot,
104 .getoffset = segmap_getoffset,
105 .gettype = segmap_gettype,
106 .getvp = segmap_getvp,
107 .dump = segmap_dump,
108 .pagelock = segmap_pagelock,
109 .getmemid = segmap_getmemid,
110 };
111
112 /*
113 * Private segmap routines.
114 */
115 static void segmap_unlock(struct hat *hat, struct seg *seg, caddr_t addr,
116 size_t len, enum seg_rw rw, struct smap *smp);
117 static void segmap_smapadd(struct smap *smp);
|
77 static faultcode_t segmap_faulta(struct seg *seg, caddr_t addr);
78 static int segmap_checkprot(struct seg *seg, caddr_t addr, size_t len,
79 uint_t prot);
80 static int segmap_kluster(struct seg *seg, caddr_t addr, ssize_t);
81 static int segmap_getprot(struct seg *seg, caddr_t addr, size_t len,
82 uint_t *protv);
83 static u_offset_t segmap_getoffset(struct seg *seg, caddr_t addr);
84 static int segmap_gettype(struct seg *seg, caddr_t addr);
85 static int segmap_getvp(struct seg *seg, caddr_t addr, struct vnode **vpp);
86 static void segmap_dump(struct seg *seg);
87 static int segmap_pagelock(struct seg *seg, caddr_t addr, size_t len,
88 struct page ***ppp, enum lock_type type,
89 enum seg_rw rw);
90 static int segmap_getmemid(struct seg *seg, caddr_t addr, memid_t *memidp);
91
92 /* segkpm support */
93 static caddr_t segmap_pagecreate_kpm(struct seg *, vnode_t *, u_offset_t,
94 struct smap *, enum seg_rw);
95 struct smap *get_smap_kpm(caddr_t, page_t **);
96
97 static const struct seg_ops segmap_ops = {
98 .free = segmap_free,
99 .fault = segmap_fault,
100 .faulta = segmap_faulta,
101 .checkprot = segmap_checkprot,
102 .kluster = segmap_kluster,
103 .getprot = segmap_getprot,
104 .getoffset = segmap_getoffset,
105 .gettype = segmap_gettype,
106 .getvp = segmap_getvp,
107 .dump = segmap_dump,
108 .pagelock = segmap_pagelock,
109 .getmemid = segmap_getmemid,
110 };
111
112 /*
113 * Private segmap routines.
114 */
115 static void segmap_unlock(struct hat *hat, struct seg *seg, caddr_t addr,
116 size_t len, enum seg_rw rw, struct smap *smp);
117 static void segmap_smapadd(struct smap *smp);
|