Lines Matching refs:seg
57 static int segvmm_dup(struct seg *, struct seg *);
58 static int segvmm_unmap(struct seg *, caddr_t, size_t);
59 static void segvmm_free(struct seg *);
60 static faultcode_t segvmm_fault(struct hat *, struct seg *, caddr_t, size_t,
62 static faultcode_t segvmm_faulta(struct seg *, caddr_t);
63 static int segvmm_setprot(struct seg *, caddr_t, size_t, uint_t);
64 static int segvmm_checkprot(struct seg *, caddr_t, size_t, uint_t);
65 static int segvmm_sync(struct seg *, caddr_t, size_t, int, uint_t);
66 static size_t segvmm_incore(struct seg *, caddr_t, size_t, char *);
67 static int segvmm_lockop(struct seg *, caddr_t, size_t, int, int, ulong_t *,
69 static int segvmm_getprot(struct seg *, caddr_t, size_t, uint_t *);
70 static u_offset_t segvmm_getoffset(struct seg *, caddr_t);
71 static int segvmm_gettype(struct seg *, caddr_t);
72 static int segvmm_getvp(struct seg *, caddr_t, struct vnode **);
73 static int segvmm_advise(struct seg *, caddr_t, size_t, uint_t);
74 static void segvmm_dump(struct seg *);
75 static int segvmm_pagelock(struct seg *, caddr_t, size_t, struct page ***,
77 static int segvmm_setpagesize(struct seg *, caddr_t, size_t, uint_t);
78 static int segvmm_getmemid(struct seg *, caddr_t, memid_t *);
79 static int segvmm_capable(struct seg *, segcapability_t);
114 struct seg *seg = arg; in segvmm_invalidate() local
115 segvmm_data_t *svmd = seg->s_data; in segvmm_invalidate()
128 const uintptr_t end = MIN(gpa + sz, svmd->svmd_off + seg->s_size); in segvmm_invalidate()
132 ASSERT(start >= svmd->svmd_off && end <= svmd->svmd_off + seg->s_size); in segvmm_invalidate()
134 const caddr_t unload_va = seg->s_base + (start - svmd->svmd_off); in segvmm_invalidate()
136 ASSERT3U(unload_sz, <=, seg->s_size); in segvmm_invalidate()
138 hat_unload(seg->s_as->a_hat, unload_va, unload_sz, HAT_UNLOAD); in segvmm_invalidate()
145 segvmm_create(struct seg **segpp, void *argsp) in segvmm_create()
147 struct seg *seg = *segpp; in segvmm_create() local
161 seg->s_ops = &segvmm_ops; in segvmm_create()
162 seg->s_data = data; in segvmm_create()
172 err = vmc_set_inval_cb(data->svmd_vmc, segvmm_invalidate, seg); in segvmm_create()
174 seg->s_ops = NULL; in segvmm_create()
175 seg->s_data = NULL; in segvmm_create()
184 segvmm_dup(struct seg *seg, struct seg *newseg) in segvmm_dup() argument
186 segvmm_data_t *svmd = seg->s_data; in segvmm_dup()
189 ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as)); in segvmm_dup()
196 newseg->s_ops = seg->s_ops; in segvmm_dup()
225 segvmm_unmap(struct seg *seg, caddr_t addr, size_t len) in segvmm_unmap() argument
227 segvmm_data_t *svmd = seg->s_data; in segvmm_unmap()
229 ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as)); in segvmm_unmap()
232 if (addr != seg->s_base || len != seg->s_size) { in segvmm_unmap()
240 hat_unload(seg->s_as->a_hat, addr, len, HAT_UNLOAD_UNMAP); in segvmm_unmap()
242 seg_free(seg); in segvmm_unmap()
247 segvmm_free(struct seg *seg) in segvmm_free() argument
249 segvmm_data_t *svmd = seg->s_data; in segvmm_free()
264 seg->s_data = NULL; in segvmm_free()
268 segvmm_fault_obj(struct hat *hat, struct seg *seg, uintptr_t va, size_t len) in segvmm_fault_obj() argument
270 segvmm_data_t *svmd = seg->s_data; in segvmm_fault_obj()
279 uintptr_t off = va - (uintptr_t)seg->s_base + svmd->svmd_off; in segvmm_fault_obj()
298 segvmm_fault_space(struct hat *hat, struct seg *seg, uintptr_t va, size_t len) in segvmm_fault_space() argument
300 segvmm_data_t *svmd = seg->s_data; in segvmm_fault_space()
309 uintptr_t off = va - (uintptr_t)seg->s_base + svmd->svmd_off; in segvmm_fault_space()
345 segvmm_fault(struct hat *hat, struct seg *seg, caddr_t addr, size_t len, in segvmm_fault() argument
348 segvmm_data_t *svmd = seg->s_data; in segvmm_fault()
351 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segvmm_fault()
373 err = segvmm_fault_obj(hat, seg, (uintptr_t)addr, len); in segvmm_fault()
375 err = segvmm_fault_space(hat, seg, (uintptr_t)addr, len); in segvmm_fault()
393 segvmm_faulta(struct seg *seg, caddr_t addr) in segvmm_faulta() argument
401 segvmm_setprot(struct seg *seg, caddr_t addr, size_t len, uint_t prot) in segvmm_setprot() argument
403 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segvmm_setprot()
411 segvmm_checkprot(struct seg *seg, caddr_t addr, size_t len, uint_t prot) in segvmm_checkprot() argument
413 segvmm_data_t *svmd = seg->s_data; in segvmm_checkprot()
416 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segvmm_checkprot()
428 segvmm_sync(struct seg *seg, caddr_t addr, size_t len, int attr, uint_t flags) in segvmm_sync() argument
436 segvmm_incore(struct seg *seg, caddr_t addr, size_t len, char *vec) in segvmm_incore() argument
440 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segvmm_incore()
454 segvmm_lockop(struct seg *seg, caddr_t addr, size_t len, int attr, int op, in segvmm_lockop() argument
462 segvmm_getprot(struct seg *seg, caddr_t addr, size_t len, uint_t *protv) in segvmm_getprot() argument
464 segvmm_data_t *svmd = seg->s_data; in segvmm_getprot()
468 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segvmm_getprot()
477 pgno = seg_page(seg, addr + len) - seg_page(seg, addr) + 1; in segvmm_getprot()
486 segvmm_getoffset(struct seg *seg, caddr_t addr) in segvmm_getoffset() argument
497 segvmm_gettype(struct seg *seg, caddr_t addr) in segvmm_gettype() argument
508 segvmm_getvp(struct seg *seg, caddr_t addr, struct vnode **vpp) in segvmm_getvp() argument
510 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segvmm_getvp()
518 segvmm_advise(struct seg *seg, caddr_t addr, size_t len, uint_t behav) in segvmm_advise() argument
530 segvmm_dump(struct seg *seg) in segvmm_dump() argument
540 segvmm_pagelock(struct seg *seg, caddr_t addr, size_t len, struct page ***ppp, in segvmm_pagelock() argument
548 segvmm_setpagesize(struct seg *seg, caddr_t addr, size_t len, uint_t szc) in segvmm_setpagesize() argument
554 segvmm_getmemid(struct seg *seg, caddr_t addr, memid_t *memidp) in segvmm_getmemid() argument
556 segvmm_data_t *svmd = seg->s_data; in segvmm_getmemid()
559 memidp->val[1] = (uintptr_t)(addr - seg->s_base) + svmd->svmd_off; in segvmm_getmemid()
565 segvmm_capable(struct seg *seg, segcapability_t capability) in segvmm_capable() argument