Lines Matching refs:seg

40 #include <vm/seg.h>
46 static int segumap_dup(struct seg *, struct seg *);
47 static int segumap_unmap(struct seg *, caddr_t, size_t);
48 static void segumap_free(struct seg *);
49 static faultcode_t segumap_fault(struct hat *, struct seg *, caddr_t, size_t,
51 static faultcode_t segumap_faulta(struct seg *, caddr_t);
52 static int segumap_setprot(struct seg *, caddr_t, size_t, uint_t);
53 static int segumap_checkprot(struct seg *, caddr_t, size_t, uint_t);
54 static int segumap_sync(struct seg *, caddr_t, size_t, int, uint_t);
55 static size_t segumap_incore(struct seg *, caddr_t, size_t, char *);
56 static int segumap_lockop(struct seg *, caddr_t, size_t, int, int, ulong_t *,
58 static int segumap_getprot(struct seg *, caddr_t, size_t, uint_t *);
59 static u_offset_t segumap_getoffset(struct seg *, caddr_t);
60 static int segumap_gettype(struct seg *, caddr_t);
61 static int segumap_getvp(struct seg *, caddr_t, struct vnode **);
62 static int segumap_advise(struct seg *, caddr_t, size_t, uint_t);
63 static void segumap_dump(struct seg *);
64 static int segumap_pagelock(struct seg *, caddr_t, size_t, struct page ***,
66 static int segumap_setpagesize(struct seg *, caddr_t, size_t, uint_t);
67 static int segumap_getmemid(struct seg *, caddr_t, memid_t *);
68 static int segumap_capable(struct seg *, segcapability_t);
102 segumap_create(struct seg *seg, void *argsp)
117 ((uintptr_t)a->kaddr + seg->s_size) < (uintptr_t)a->kaddr ||
120 !segumap_verify_safe(a->kaddr, seg->s_size)) {
129 seg->s_ops = &segumap_ops;
130 seg->s_data = data;
137 struct seg *seg;
149 seg = as_segat(&kas, kaddr);
150 VERIFY(seg != NULL);
151 VERIFY(seg->s_base + seg->s_size >= kaddr + len);
152 VERIFY(seg->s_ops == &segkmem_ops);
159 segumap_dup(struct seg *seg, struct seg *newseg)
161 segumap_data_t *sud = (segumap_data_t *)seg->s_data;
164 ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as));
171 newseg->s_ops = seg->s_ops;
177 segumap_unmap(struct seg *seg, caddr_t addr, size_t len)
179 segumap_data_t *sud = (segumap_data_t *)seg->s_data;
181 ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as));
184 if (addr != seg->s_base || len != seg->s_size) {
194 hat_unload(seg->s_as->a_hat, addr, len, HAT_UNLOAD_UNMAP);
196 seg_free(seg);
201 segumap_free(struct seg *seg)
203 segumap_data_t *data = (segumap_data_t *)seg->s_data;
210 seg->s_data = NULL;
215 segumap_fault(struct hat *hat, struct seg *seg, caddr_t addr, size_t len,
218 segumap_data_t *sud = (segumap_data_t *)seg->s_data;
220 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as));
250 for (uintptr_t i = 0; i < seg->s_size; i += PAGESIZE) {
255 hat_devload(seg->s_as->a_hat, seg->s_base + i,
275 segumap_faulta(struct seg *seg, caddr_t addr)
283 segumap_setprot(struct seg *seg, caddr_t addr, size_t len, uint_t prot)
285 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as));
295 segumap_checkprot(struct seg *seg, caddr_t addr, size_t len, uint_t prot)
297 segumap_data_t *sud = (segumap_data_t *)seg->s_data;
300 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as));
312 segumap_sync(struct seg *seg, caddr_t addr, size_t len, int attr, uint_t flags)
320 segumap_incore(struct seg *seg, caddr_t addr, size_t len, char *vec)
324 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as));
338 segumap_lockop(struct seg *seg, caddr_t addr, size_t len, int attr, int op,
346 segumap_getprot(struct seg *seg, caddr_t addr, size_t len, uint_t *protv)
348 segumap_data_t *sud = (segumap_data_t *)seg->s_data;
352 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as));
361 pgno = seg_page(seg, addr + len) - seg_page(seg, addr) + 1;
370 segumap_getoffset(struct seg *seg, caddr_t addr)
381 segumap_gettype(struct seg *seg, caddr_t addr)
392 segumap_getvp(struct seg *seg, caddr_t addr, struct vnode **vpp)
394 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as));
402 segumap_advise(struct seg *seg, caddr_t addr, size_t len, uint_t behav)
414 segumap_dump(struct seg *seg)
424 segumap_pagelock(struct seg *seg, caddr_t addr, size_t len, struct page ***ppp,
432 segumap_setpagesize(struct seg *seg, caddr_t addr, size_t len, uint_t szc)
438 segumap_getmemid(struct seg *seg, caddr_t addr, memid_t *memidp)
440 segumap_data_t *sud = (segumap_data_t *)seg->s_data;
443 memidp->val[1] = (uintptr_t)(addr - seg->s_base);
449 segumap_capable(struct seg *seg, segcapability_t capability)