Lines Matching refs:seg
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) in segumap_create() argument
117 ((uintptr_t)a->kaddr + seg->s_size) < (uintptr_t)a->kaddr || in segumap_create()
120 !segumap_verify_safe(a->kaddr, seg->s_size)) { in segumap_create()
129 seg->s_ops = &segumap_ops; in segumap_create()
130 seg->s_data = data; in segumap_create()
137 struct seg *seg; in segumap_verify_safe() local
149 seg = as_segat(&kas, kaddr); in segumap_verify_safe()
150 VERIFY(seg != NULL); in segumap_verify_safe()
151 VERIFY(seg->s_base + seg->s_size >= kaddr + len); in segumap_verify_safe()
152 VERIFY(seg->s_ops == &segkmem_ops); in segumap_verify_safe()
159 segumap_dup(struct seg *seg, struct seg *newseg) in segumap_dup() argument
161 segumap_data_t *sud = (segumap_data_t *)seg->s_data; in segumap_dup()
164 ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as)); in segumap_dup()
171 newseg->s_ops = seg->s_ops; in segumap_dup()
177 segumap_unmap(struct seg *seg, caddr_t addr, size_t len) in segumap_unmap() argument
179 segumap_data_t *sud = (segumap_data_t *)seg->s_data; in segumap_unmap()
181 ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as)); in segumap_unmap()
184 if (addr != seg->s_base || len != seg->s_size) { in segumap_unmap()
194 hat_unload(seg->s_as->a_hat, addr, len, HAT_UNLOAD_UNMAP); in segumap_unmap()
196 seg_free(seg); in segumap_unmap()
201 segumap_free(struct seg *seg) in segumap_free() argument
203 segumap_data_t *data = (segumap_data_t *)seg->s_data; in segumap_free()
210 seg->s_data = NULL; in segumap_free()
215 segumap_fault(struct hat *hat, struct seg *seg, caddr_t addr, size_t len, in segumap_fault() argument
218 segumap_data_t *sud = (segumap_data_t *)seg->s_data; in segumap_fault()
220 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segumap_fault()
250 for (uintptr_t i = 0; i < seg->s_size; i += PAGESIZE) { in segumap_fault()
255 hat_devload(seg->s_as->a_hat, seg->s_base + i, in segumap_fault()
275 segumap_faulta(struct seg *seg, caddr_t addr) in segumap_faulta() argument
283 segumap_setprot(struct seg *seg, caddr_t addr, size_t len, uint_t prot) in segumap_setprot() argument
285 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segumap_setprot()
295 segumap_checkprot(struct seg *seg, caddr_t addr, size_t len, uint_t prot) in segumap_checkprot() argument
297 segumap_data_t *sud = (segumap_data_t *)seg->s_data; in segumap_checkprot()
300 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segumap_checkprot()
312 segumap_sync(struct seg *seg, caddr_t addr, size_t len, int attr, uint_t flags) in segumap_sync() argument
320 segumap_incore(struct seg *seg, caddr_t addr, size_t len, char *vec) in segumap_incore() argument
324 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segumap_incore()
338 segumap_lockop(struct seg *seg, caddr_t addr, size_t len, int attr, int op, in segumap_lockop() argument
346 segumap_getprot(struct seg *seg, caddr_t addr, size_t len, uint_t *protv) in segumap_getprot() argument
348 segumap_data_t *sud = (segumap_data_t *)seg->s_data; in segumap_getprot()
352 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segumap_getprot()
361 pgno = seg_page(seg, addr + len) - seg_page(seg, addr) + 1; in segumap_getprot()
370 segumap_getoffset(struct seg *seg, caddr_t addr) in segumap_getoffset() argument
381 segumap_gettype(struct seg *seg, caddr_t addr) in segumap_gettype() argument
392 segumap_getvp(struct seg *seg, caddr_t addr, struct vnode **vpp) in segumap_getvp() argument
394 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segumap_getvp()
402 segumap_advise(struct seg *seg, caddr_t addr, size_t len, uint_t behav) in segumap_advise() argument
414 segumap_dump(struct seg *seg) in segumap_dump() argument
424 segumap_pagelock(struct seg *seg, caddr_t addr, size_t len, struct page ***ppp, in segumap_pagelock() argument
432 segumap_setpagesize(struct seg *seg, caddr_t addr, size_t len, uint_t szc) in segumap_setpagesize() argument
438 segumap_getmemid(struct seg *seg, caddr_t addr, memid_t *memidp) in segumap_getmemid() argument
440 segumap_data_t *sud = (segumap_data_t *)seg->s_data; in segumap_getmemid()
443 memidp->val[1] = (uintptr_t)(addr - seg->s_base); in segumap_getmemid()
449 segumap_capable(struct seg *seg, segcapability_t capability) in segumap_capable() argument