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 **segpp, void *argsp) in segumap_create()
104 struct seg *seg = *segpp; in segumap_create() local
118 ((uintptr_t)a->kaddr + seg->s_size) < (uintptr_t)a->kaddr || in segumap_create()
121 !segumap_verify_safe(a->kaddr, seg->s_size)) { in segumap_create()
130 seg->s_ops = &segumap_ops; in segumap_create()
131 seg->s_data = data; in segumap_create()
138 struct seg *seg; in segumap_verify_safe() local
150 seg = as_segat(&kas, kaddr); in segumap_verify_safe()
151 VERIFY(seg != NULL); in segumap_verify_safe()
152 VERIFY(seg->s_base + seg->s_size >= kaddr + len); in segumap_verify_safe()
153 VERIFY(seg->s_ops == &segkmem_ops); in segumap_verify_safe()
160 segumap_dup(struct seg *seg, struct seg *newseg) in segumap_dup() argument
162 segumap_data_t *sud = (segumap_data_t *)seg->s_data; in segumap_dup()
165 ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as)); in segumap_dup()
172 newseg->s_ops = seg->s_ops; in segumap_dup()
178 segumap_unmap(struct seg *seg, caddr_t addr, size_t len) in segumap_unmap() argument
180 segumap_data_t *sud = (segumap_data_t *)seg->s_data; in segumap_unmap()
182 ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as)); in segumap_unmap()
185 if (addr != seg->s_base || len != seg->s_size) { in segumap_unmap()
195 hat_unload(seg->s_as->a_hat, addr, len, HAT_UNLOAD_UNMAP); in segumap_unmap()
197 seg_free(seg); in segumap_unmap()
202 segumap_free(struct seg *seg) in segumap_free() argument
204 segumap_data_t *data = (segumap_data_t *)seg->s_data; in segumap_free()
211 seg->s_data = NULL; in segumap_free()
216 segumap_fault(struct hat *hat, struct seg *seg, caddr_t addr, size_t len, in segumap_fault() argument
219 segumap_data_t *sud = (segumap_data_t *)seg->s_data; in segumap_fault()
221 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segumap_fault()
251 for (uintptr_t i = 0; i < seg->s_size; i += PAGESIZE) { in segumap_fault()
256 hat_devload(seg->s_as->a_hat, seg->s_base + i, in segumap_fault()
276 segumap_faulta(struct seg *seg, caddr_t addr) in segumap_faulta() argument
284 segumap_setprot(struct seg *seg, caddr_t addr, size_t len, uint_t prot) in segumap_setprot() argument
286 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segumap_setprot()
296 segumap_checkprot(struct seg *seg, caddr_t addr, size_t len, uint_t prot) in segumap_checkprot() argument
298 segumap_data_t *sud = (segumap_data_t *)seg->s_data; in segumap_checkprot()
301 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segumap_checkprot()
313 segumap_sync(struct seg *seg, caddr_t addr, size_t len, int attr, uint_t flags) in segumap_sync() argument
321 segumap_incore(struct seg *seg, caddr_t addr, size_t len, char *vec) in segumap_incore() argument
325 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segumap_incore()
339 segumap_lockop(struct seg *seg, caddr_t addr, size_t len, int attr, int op, in segumap_lockop() argument
347 segumap_getprot(struct seg *seg, caddr_t addr, size_t len, uint_t *protv) in segumap_getprot() argument
349 segumap_data_t *sud = (segumap_data_t *)seg->s_data; in segumap_getprot()
353 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segumap_getprot()
362 pgno = seg_page(seg, addr + len) - seg_page(seg, addr) + 1; in segumap_getprot()
371 segumap_getoffset(struct seg *seg, caddr_t addr) in segumap_getoffset() argument
382 segumap_gettype(struct seg *seg, caddr_t addr) in segumap_gettype() argument
393 segumap_getvp(struct seg *seg, caddr_t addr, struct vnode **vpp) in segumap_getvp() argument
395 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segumap_getvp()
403 segumap_advise(struct seg *seg, caddr_t addr, size_t len, uint_t behav) in segumap_advise() argument
415 segumap_dump(struct seg *seg) in segumap_dump() argument
425 segumap_pagelock(struct seg *seg, caddr_t addr, size_t len, struct page ***ppp, in segumap_pagelock() argument
433 segumap_setpagesize(struct seg *seg, caddr_t addr, size_t len, uint_t szc) in segumap_setpagesize() argument
439 segumap_getmemid(struct seg *seg, caddr_t addr, memid_t *memidp) in segumap_getmemid() argument
441 segumap_data_t *sud = (segumap_data_t *)seg->s_data; in segumap_getmemid()
444 memidp->val[1] = (uintptr_t)(addr - seg->s_base); in segumap_getmemid()
450 segumap_capable(struct seg *seg, segcapability_t capability) in segumap_capable() argument