Lines Matching refs:seg
67 static int segspt_create(struct seg **segpp, void *argsp);
68 static int segspt_unmap(struct seg *seg, caddr_t raddr, size_t ssize);
69 static void segspt_free(struct seg *seg);
70 static void segspt_free_pages(struct seg *seg, caddr_t addr, size_t len);
71 static lgrp_mem_policy_info_t *segspt_getpolicy(struct seg *seg, caddr_t addr);
75 segspt_badop_dup(struct seg *seg __unused, struct seg *newseg __unused) in segspt_badop_dup()
82 segspt_badop_fault(struct hat *hat, struct seg *seg, caddr_t addr, in segspt_badop_fault() argument
90 segspt_badop_faulta(struct seg *seg __unused, caddr_t addr __unused) in segspt_badop_faulta()
97 segspt_badop_prot(struct seg *seg, caddr_t addr, size_t len, uint_t prot) in segspt_badop_prot() argument
104 segspt_badop_checkprot(struct seg *seg, caddr_t addr, size_t size, uint_t prot) in segspt_badop_checkprot() argument
111 segspt_badop_kluster(struct seg *seg, caddr_t addr, ssize_t delta) in segspt_badop_kluster() argument
118 segspt_badop_swapout(struct seg *seg) in segspt_badop_swapout() argument
125 segspt_badop_sync(struct seg *seg, caddr_t addr, size_t len, int attr, in segspt_badop_sync() argument
134 segspt_badop_incore(struct seg *seg, caddr_t addr, size_t len, char *vec) in segspt_badop_incore() argument
141 segspt_badop_lockop(struct seg *seg, caddr_t addr, size_t len, int attr, in segspt_badop_lockop() argument
149 segspt_badop_getprot(struct seg *seg, caddr_t addr, size_t len, uint_t *protv) in segspt_badop_getprot() argument
156 segspt_badop_getoffset(struct seg *seg, caddr_t addr) in segspt_badop_getoffset() argument
163 segspt_badop_gettype(struct seg *seg, caddr_t addr) in segspt_badop_gettype() argument
170 segspt_badop_getvp(struct seg *seg, caddr_t addr, struct vnode **vpp) in segspt_badop_getvp() argument
177 segspt_badop_advise(struct seg *seg, caddr_t addr, size_t len, uint_t behav) in segspt_badop_advise() argument
184 segspt_badop_dump(struct seg *seg) in segspt_badop_dump() argument
191 segspt_badop_pagelock(struct seg *seg, caddr_t addr, size_t len, in segspt_badop_pagelock() argument
199 segspt_badop_setpgsz(struct seg *seg, caddr_t addr, size_t len, uint_t szc) in segspt_badop_setpgsz() argument
206 segspt_badop_getmemid(struct seg *seg, caddr_t addr, memid_t *memidp) in segspt_badop_getmemid() argument
213 segspt_badop_capable(struct seg *seg, segcapability_t capability) in segspt_badop_capable() argument
245 static int segspt_shmdup(struct seg *seg, struct seg *newseg);
246 static int segspt_shmunmap(struct seg *seg, caddr_t raddr, size_t ssize);
247 static void segspt_shmfree(struct seg *seg);
248 static faultcode_t segspt_shmfault(struct hat *hat, struct seg *seg,
250 static faultcode_t segspt_shmfaulta(struct seg *seg, caddr_t addr);
251 static int segspt_shmsetprot(struct seg *seg, caddr_t addr, size_t len,
253 static int segspt_shmcheckprot(struct seg *seg, caddr_t addr, size_t size,
255 static int segspt_shmkluster(struct seg *seg, caddr_t addr, ssize_t delta);
256 static size_t segspt_shmswapout(struct seg *seg);
257 static size_t segspt_shmincore(struct seg *seg, caddr_t addr, size_t len,
259 static int segspt_shmsync(struct seg *seg, caddr_t addr, size_t len,
261 static int segspt_shmlockop(struct seg *seg, caddr_t addr, size_t len,
263 static int segspt_shmgetprot(struct seg *seg, caddr_t addr, size_t len,
265 static u_offset_t segspt_shmgetoffset(struct seg *seg, caddr_t addr);
266 static int segspt_shmgettype(struct seg *seg, caddr_t addr);
267 static int segspt_shmgetvp(struct seg *seg, caddr_t addr, struct vnode **vpp);
268 static int segspt_shmadvise(struct seg *seg, caddr_t addr, size_t len,
270 static void segspt_shmdump(struct seg *seg);
271 static int segspt_shmpagelock(struct seg *, caddr_t, size_t,
273 static int segspt_shmsetpgsz(struct seg *, caddr_t, size_t, uint_t);
274 static int segspt_shmgetmemid(struct seg *, caddr_t, memid_t *);
275 static lgrp_mem_policy_info_t *segspt_shmgetpolicy(struct seg *, caddr_t);
276 static int segspt_shmcapable(struct seg *, segcapability_t);
305 static void segspt_purge(struct seg *seg);
308 static int spt_anon_getpages(struct seg *seg, caddr_t addr, size_t len,
339 sptcreate(size_t size, struct seg **sptseg, struct anon_map *amp, in sptcreate()
387 segspt_free(struct seg *seg) in segspt_free() argument
389 struct spt_data *sptd = (struct spt_data *)seg->s_data; in segspt_free()
391 ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as)); in segspt_free()
395 segspt_free_pages(seg, seg->s_base, sptd->spt_realsize); in segspt_free()
411 segspt_shmsync(struct seg *seg, caddr_t addr, size_t len, int attr, in segspt_shmsync() argument
414 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segspt_shmsync()
421 segspt_shmincore(struct seg *seg, caddr_t addr, size_t len, char *vec) in segspt_shmincore() argument
425 struct shm_data *shmd = (struct shm_data *)seg->s_data; in segspt_shmincore()
426 struct seg *sptseg; in segspt_shmincore()
429 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segspt_shmincore()
431 seg = seg; in segspt_shmincore()
457 anon_index = seg_page(seg, addr); in segspt_shmincore()
489 segspt_unmap(struct seg *seg, caddr_t raddr, size_t ssize) in segspt_unmap() argument
493 ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as)); in segspt_unmap()
506 share_size = page_get_pagesize(seg->s_szc); in segspt_unmap()
509 if (raddr == seg->s_base && ssize == seg->s_size) { in segspt_unmap()
510 seg_free(seg); in segspt_unmap()
517 segspt_create(struct seg **segpp, void *argsp) in segspt_create()
519 struct seg *seg = *segpp; in segspt_create() local
521 caddr_t addr = seg->s_base; in segspt_create()
545 ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as)); in segspt_create()
569 seg->s_ops = &segspt_ops; in segspt_create()
574 seg->s_data = (caddr_t)sptd; in segspt_create()
577 seg->s_szc = sptcargs->szc; in segspt_create()
582 if (seg->s_szc > amp->a_szc) { in segspt_create()
583 amp->a_szc = seg->s_szc; in segspt_create()
600 share_sz = page_get_pagesize(seg->s_szc); in segspt_create()
640 sptcargs->seg_spt = seg; in segspt_create()
648 seg, addr, S_CREATE, cred)) != 0) in segspt_create()
711 pgsz = page_get_pagesize(seg->s_szc); in segspt_create()
712 pgcnt = page_get_pagecnt(seg->s_szc); in segspt_create()
715 hat_memload_array(seg->s_as->a_hat, a, sz, in segspt_create()
739 sptcargs->seg_spt = seg; in segspt_create()
743 seg->s_data = NULL; in segspt_create()
760 segspt_free_pages(struct seg *seg, caddr_t addr, size_t len) in segspt_free_pages() argument
763 struct spt_data *sptd = (struct spt_data *)seg->s_data; in segspt_free_pages()
778 ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as)); in segspt_free_pages()
790 hat_unload(seg->s_as->a_hat, addr, len, hat_flags); in segspt_free_pages()
927 segspt_getpolicy(struct seg *seg, caddr_t addr) in segspt_getpolicy() argument
934 ASSERT(seg != NULL); in segspt_getpolicy()
944 spt_data = (struct spt_data *)seg->s_data; in segspt_getpolicy()
955 anon_index = seg_page(seg, addr); in segspt_getpolicy()
972 segspt_dismpagelock(struct seg *seg, caddr_t addr, size_t len, in segspt_dismpagelock() argument
975 struct shm_data *shmd = (struct shm_data *)seg->s_data; in segspt_dismpagelock()
976 struct seg *sptseg = shmd->shm_sptseg; in segspt_dismpagelock()
990 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segspt_dismpagelock()
1001 pg_idx = seg_page(seg, addr); in segspt_dismpagelock()
1016 seg_pinactive(seg, NULL, seg->s_base, sptd->spt_amp->size, in segspt_dismpagelock()
1028 (AS_ISUNMAPWAIT(seg->s_as) && in segspt_dismpagelock()
1030 segspt_purge(seg); in segspt_dismpagelock()
1038 segspt_purge(seg); in segspt_dismpagelock()
1051 pplist = seg_plookup(seg, NULL, seg->s_base, sptd->spt_amp->size, in segspt_dismpagelock()
1059 seg_pinactive(seg, NULL, seg->s_base, in segspt_dismpagelock()
1085 pplist = seg_plookup(seg, NULL, seg->s_base, sptd->spt_amp->size, in segspt_dismpagelock()
1094 seg_pinactive(seg, NULL, seg->s_base, in segspt_dismpagelock()
1116 if (seg_pinsert_check(seg, NULL, seg->s_base, sptd->spt_amp->size, in segspt_dismpagelock()
1218 ret = seg_pinsert(seg, NULL, seg->s_base, sptd->spt_amp->size, in segspt_dismpagelock()
1248 seg_pinactive(seg, NULL, seg->s_base, in segspt_dismpagelock()
1303 if (AS_ISUNMAPWAIT(seg->s_as)) { in segspt_dismpagelock()
1304 mutex_enter(&seg->s_as->a_contents); in segspt_dismpagelock()
1305 if (AS_ISUNMAPWAIT(seg->s_as)) { in segspt_dismpagelock()
1306 AS_CLRUNMAPWAIT(seg->s_as); in segspt_dismpagelock()
1307 cv_broadcast(&seg->s_as->a_cv); in segspt_dismpagelock()
1309 mutex_exit(&seg->s_as->a_contents); in segspt_dismpagelock()
1328 segspt_shmpagelock(struct seg *seg, caddr_t addr, size_t len, in segspt_shmpagelock() argument
1331 struct shm_data *shmd = (struct shm_data *)seg->s_data; in segspt_shmpagelock()
1332 struct seg *sptseg = shmd->shm_sptseg; in segspt_shmpagelock()
1345 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segspt_shmpagelock()
1358 return (segspt_dismpagelock(seg, addr, len, ppp, type, rw)); in segspt_shmpagelock()
1361 page_index = seg_page(seg, addr); in segspt_shmpagelock()
1377 seg_pinactive(seg, NULL, seg->s_base, sptd->spt_amp->size, in segspt_shmpagelock()
1388 if (AS_ISUNMAPWAIT(seg->s_as) && (shmd->shm_softlockcnt > 0)) { in segspt_shmpagelock()
1389 segspt_purge(seg); in segspt_shmpagelock()
1400 pplist = seg_plookup(seg, NULL, seg->s_base, sptd->spt_amp->size, in segspt_shmpagelock()
1419 pplist = seg_plookup(seg, NULL, seg->s_base, sptd->spt_amp->size, in segspt_shmpagelock()
1433 if (seg_pinsert_check(seg, NULL, seg->s_base, sptd->spt_amp->size, in segspt_shmpagelock()
1497 ret = seg_pinsert(seg, NULL, seg->s_base, sptd->spt_amp->size, in segspt_shmpagelock()
1560 if (AS_ISUNMAPWAIT(seg->s_as)) { in segspt_shmpagelock()
1561 mutex_enter(&seg->s_as->a_contents); in segspt_shmpagelock()
1562 if (AS_ISUNMAPWAIT(seg->s_as)) { in segspt_shmpagelock()
1563 AS_CLRUNMAPWAIT(seg->s_as); in segspt_shmpagelock()
1564 cv_broadcast(&seg->s_as->a_cv); in segspt_shmpagelock()
1566 mutex_exit(&seg->s_as->a_contents); in segspt_shmpagelock()
1577 segspt_purge(struct seg *seg) in segspt_purge() argument
1579 seg_ppurge(seg, NULL, SEGP_FORCE_WIRED); in segspt_purge()
1586 struct seg *seg = (struct seg *)ptag; in segspt_reclaim() local
1587 struct shm_data *shmd = (struct shm_data *)seg->s_data; in segspt_reclaim()
1588 struct seg *sptseg; in segspt_reclaim()
1603 ASSERT(async || AS_LOCK_HELD(seg->s_as)); in segspt_reclaim()
1676 if (async || AS_ISUNMAPWAIT(seg->s_as)) { in segspt_reclaim()
1677 mutex_enter(&seg->s_as->a_contents); in segspt_reclaim()
1679 AS_SETNOUNMAPWAIT(seg->s_as); in segspt_reclaim()
1680 if (AS_ISUNMAPWAIT(seg->s_as)) { in segspt_reclaim()
1681 AS_CLRUNMAPWAIT(seg->s_as); in segspt_reclaim()
1682 cv_broadcast(&seg->s_as->a_cv); in segspt_reclaim()
1684 mutex_exit(&seg->s_as->a_contents); in segspt_reclaim()
1722 segspt_softunlock(struct seg *seg, caddr_t sptseg_addr, in segspt_softunlock() argument
1725 struct shm_data *shmd = (struct shm_data *)seg->s_data; in segspt_softunlock()
1726 struct seg *sptseg; in segspt_softunlock()
1737 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segspt_softunlock()
1808 if (AS_ISUNMAPWAIT(seg->s_as)) { in segspt_softunlock()
1809 mutex_enter(&seg->s_as->a_contents); in segspt_softunlock()
1810 if (AS_ISUNMAPWAIT(seg->s_as)) { in segspt_softunlock()
1811 AS_CLRUNMAPWAIT(seg->s_as); in segspt_softunlock()
1812 cv_broadcast(&seg->s_as->a_cv); in segspt_softunlock()
1814 mutex_exit(&seg->s_as->a_contents); in segspt_softunlock()
1820 segspt_shmattach(struct seg **segpp, void *argsp) in segspt_shmattach()
1822 struct seg *seg = *segpp; in segspt_shmattach() local
1829 ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as)); in segspt_shmattach()
1840 NULL, 0, seg->s_size); in segspt_shmattach()
1844 seg->s_data = (void *)shmd; in segspt_shmattach()
1845 seg->s_ops = &segspt_shmops; in segspt_shmattach()
1846 seg->s_szc = shmd->shm_sptseg->s_szc; in segspt_shmattach()
1852 seg->s_data = (void *)NULL; in segspt_shmattach()
1858 if ((error = hat_share(seg->s_as->a_hat, seg->s_base, in segspt_shmattach()
1860 seg->s_size, seg->s_szc)) != 0) { in segspt_shmattach()
1866 error = hat_share(seg->s_as->a_hat, seg->s_base, in segspt_shmattach()
1868 seg->s_size, seg->s_szc); in segspt_shmattach()
1871 seg->s_szc = 0; in segspt_shmattach()
1872 seg->s_data = (void *)NULL; in segspt_shmattach()
1883 segspt_shmunmap(struct seg *seg, caddr_t raddr, size_t ssize) in segspt_shmunmap() argument
1885 struct shm_data *shmd = (struct shm_data *)seg->s_data; in segspt_shmunmap()
1888 ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as)); in segspt_shmunmap()
1892 segspt_purge(seg); in segspt_shmunmap()
1899 if (ssize != seg->s_size) { in segspt_shmunmap()
1902 ssize, seg->s_size); in segspt_shmunmap()
1907 (void) segspt_shmlockop(seg, raddr, shmd->shm_amp->size, 0, MC_UNLOCK, in segspt_shmunmap()
1909 hat_unshare(seg->s_as->a_hat, raddr, ssize, seg->s_szc); in segspt_shmunmap()
1911 seg_free(seg); in segspt_shmunmap()
1917 segspt_shmfree(struct seg *seg) in segspt_shmfree() argument
1919 struct shm_data *shmd = (struct shm_data *)seg->s_data; in segspt_shmfree()
1922 ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as)); in segspt_shmfree()
1924 (void) segspt_shmlockop(seg, seg->s_base, shm_amp->size, 0, in segspt_shmfree()
1953 segspt_shmsetprot(struct seg *seg, caddr_t addr, size_t len, uint_t prot) in segspt_shmsetprot() argument
1955 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segspt_shmsetprot()
1970 segspt_dismfault(struct hat *hat, struct seg *seg, caddr_t addr, in segspt_dismfault() argument
1973 struct shm_data *shmd = (struct shm_data *)seg->s_data; in segspt_dismfault()
1974 struct seg *sptseg = shmd->shm_sptseg; in segspt_dismfault()
1993 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segspt_dismfault()
2005 ASSERT(addr >= seg->s_base); in segspt_dismfault()
2006 if (((addr + len) - seg->s_base) > sptd->spt_realsize) in segspt_dismfault()
2030 an_idx = seg_page(seg, shm_addr); in segspt_dismfault()
2081 page_migrate(seg, shm_addr, ppa, npages); in segspt_dismfault()
2101 if (hat_share(seg->s_as->a_hat, shm_addr, in segspt_dismfault()
2103 seg->s_szc) != 0) { in segspt_dismfault()
2125 segspt_softunlock(seg, segspt_addr, size, rw); in segspt_dismfault()
2153 segspt_shmfault(struct hat *hat, struct seg *seg, caddr_t addr, in segspt_shmfault() argument
2156 struct shm_data *shmd = (struct shm_data *)seg->s_data; in segspt_shmfault()
2157 struct seg *sptseg = shmd->shm_sptseg; in segspt_shmfault()
2180 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segspt_shmfault()
2183 return (segspt_dismfault(hat, seg, addr, len, type, rw)); in segspt_shmfault()
2196 ASSERT(addr >= seg->s_base); in segspt_shmfault()
2197 if (((addr + len) - seg->s_base) > sptd->spt_realsize) in segspt_shmfault()
2221 anon_index = seg_page(seg, shm_addr); in segspt_shmfault()
2273 if (hat_share(seg->s_as->a_hat, seg->s_base, in segspt_shmfault()
2331 page_migrate(seg, shm_addr, ppa, npages); in segspt_shmfault()
2357 segspt_softunlock(seg, sptseg_addr, ptob(npages), rw); in segspt_shmfault()
2384 segspt_shmfaulta(struct seg *seg, caddr_t addr) in segspt_shmfaulta() argument
2391 segspt_shmkluster(struct seg *seg, caddr_t addr, ssize_t delta) in segspt_shmkluster() argument
2398 segspt_shmswapout(struct seg *seg) in segspt_shmswapout() argument
2407 segspt_shmdup(struct seg *seg, struct seg *newseg) in segspt_shmdup() argument
2409 struct shm_data *shmd = (struct shm_data *)seg->s_data; in segspt_shmdup()
2412 struct seg *spt_seg = shmd->shm_sptseg; in segspt_shmdup()
2416 ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as)); in segspt_shmdup()
2424 newseg->s_szc = seg->s_szc; in segspt_shmdup()
2425 ASSERT(seg->s_szc == shmd->shm_sptseg->s_szc); in segspt_shmdup()
2437 seg->s_size, seg->s_szc)) != 0) { in segspt_shmdup()
2445 shmd->shm_sptas->a_hat, SEGSPTADDR, seg->s_size, in segspt_shmdup()
2446 seg->s_szc)); in segspt_shmdup()
2453 segspt_shmcheckprot(struct seg *seg, caddr_t addr, size_t size, uint_t prot) in segspt_shmcheckprot() argument
2455 struct shm_data *shmd = (struct shm_data *)seg->s_data; in segspt_shmcheckprot()
2458 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segspt_shmcheckprot()
2472 struct seg *sptseg, in spt_anon_getpages()
2628 spt_lockpages(struct seg *seg, pgcnt_t anon_index, pgcnt_t npages, in spt_lockpages() argument
2632 struct shm_data *shmd = seg->s_data; in spt_lockpages()
2716 spt_unlockpages(struct seg *seg, pgcnt_t anon_index, pgcnt_t npages, in spt_unlockpages() argument
2719 struct shm_data *shmd = seg->s_data; in spt_unlockpages()
2789 segspt_shmlockop(struct seg *seg, caddr_t addr, size_t len, in segspt_shmlockop() argument
2792 struct shm_data *shmd = seg->s_data; in segspt_shmlockop()
2793 struct seg *sptseg = shmd->shm_sptseg; in segspt_shmlockop()
2809 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segspt_shmlockop()
2817 an_idx = seg_page(seg, addr); in segspt_shmlockop()
2844 a_an_idx = seg_page(seg, a_addr); in segspt_shmlockop()
2878 sts = spt_lockpages(seg, an_idx, npages, in segspt_shmlockop()
2917 sts = spt_unlockpages(seg, an_idx, npages, &unlocked); in segspt_shmlockop()
2933 segspt_shmgetprot(struct seg *seg, caddr_t addr, size_t len, uint_t *protv) in segspt_shmgetprot() argument
2935 struct shm_data *shmd = (struct shm_data *)seg->s_data; in segspt_shmgetprot()
2937 spgcnt_t pgno = seg_page(seg, addr+len) - seg_page(seg, addr) + 1; in segspt_shmgetprot()
2939 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segspt_shmgetprot()
2951 segspt_shmgetoffset(struct seg *seg, caddr_t addr) in segspt_shmgetoffset() argument
2953 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segspt_shmgetoffset()
2962 segspt_shmgettype(struct seg *seg, caddr_t addr) in segspt_shmgettype() argument
2964 struct shm_data *shmd = (struct shm_data *)seg->s_data; in segspt_shmgettype()
2967 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segspt_shmgettype()
2979 segspt_shmgetvp(struct seg *seg, caddr_t addr, struct vnode **vpp) in segspt_shmgetvp() argument
2981 struct shm_data *shmd = (struct shm_data *)seg->s_data; in segspt_shmgetvp()
2984 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segspt_shmgetvp()
2999 segspt_shmadvise(struct seg *seg, caddr_t addr, size_t len, uint_t behav) in segspt_shmadvise() argument
3001 struct shm_data *shmd = (struct shm_data *)seg->s_data; in segspt_shmadvise()
3010 ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); in segspt_shmadvise()
3017 pg_idx = seg_page(seg, addr); in segspt_shmadvise()
3044 writer = AS_WRITE_HELD(seg->s_as); in segspt_shmadvise()
3046 AS_LOCK_EXIT(seg->s_as); in segspt_shmadvise()
3067 AS_LOCK_ENTER(seg->s_as, writer ? RW_WRITER : RW_READER); in segspt_shmadvise()
3070 if (AS_ISUNMAPWAIT(seg->s_as)) { in segspt_shmadvise()
3071 mutex_enter(&seg->s_as->a_contents); in segspt_shmadvise()
3072 if (AS_ISUNMAPWAIT(seg->s_as)) { in segspt_shmadvise()
3073 AS_CLRUNMAPWAIT(seg->s_as); in segspt_shmadvise()
3074 cv_broadcast(&seg->s_as->a_cv); in segspt_shmadvise()
3076 mutex_exit(&seg->s_as->a_contents); in segspt_shmadvise()
3091 struct seg *sptseg = shmd->shm_sptseg; in segspt_shmadvise()
3103 anon_index = seg_page(seg, shm_addr); in segspt_shmadvise()
3137 segspt_purge(seg); in segspt_shmadvise()
3139 page_mark_migrate(seg, shm_addr, size, amp, 0, NULL, 0, 0); in segspt_shmadvise()
3147 segspt_shmdump(struct seg *seg) in segspt_shmdump() argument
3154 segspt_shmsetpgsz(struct seg *seg, caddr_t addr, size_t len, uint_t szc) in segspt_shmsetpgsz() argument
3163 segspt_shmgetmemid(struct seg *seg, caddr_t addr, memid_t *memidp) in segspt_shmgetmemid() argument
3165 struct shm_data *shmd = (struct shm_data *)seg->s_data; in segspt_shmgetmemid()
3170 struct seg *sptseg = shmd->shm_sptseg; in segspt_shmgetmemid()
3173 anon_index = seg_page(seg, addr); in segspt_shmgetmemid()
3175 if (addr > (seg->s_base + sptd->spt_realsize)) { in segspt_shmgetmemid()
3206 segspt_shmgetpolicy(struct seg *seg, caddr_t addr) in segspt_shmgetpolicy() argument
3213 ASSERT(seg != NULL); in segspt_shmgetpolicy()
3223 shm_data = (struct shm_data *)seg->s_data; in segspt_shmgetpolicy()
3234 anon_index = seg_page(seg, addr); in segspt_shmgetpolicy()
3242 segspt_shmcapable(struct seg *seg, segcapability_t capability) in segspt_shmcapable() argument