Lines Matching refs:len

103 static int	segvn_unmap(struct seg *seg, caddr_t addr, size_t len);
106 caddr_t addr, size_t len, enum fault_type type,
110 size_t len, uint_t prot);
112 size_t len, uint_t prot);
115 static int segvn_sync(struct seg *seg, caddr_t addr, size_t len,
117 static size_t segvn_incore(struct seg *seg, caddr_t addr, size_t len,
119 static int segvn_lockop(struct seg *seg, caddr_t addr, size_t len,
121 static int segvn_getprot(struct seg *seg, caddr_t addr, size_t len,
127 static int segvn_advise(struct seg *seg, caddr_t addr, size_t len,
130 static int segvn_pagelock(struct seg *seg, caddr_t addr, size_t len,
132 static int segvn_setpagesize(struct seg *seg, caddr_t addr, size_t len,
249 #define CALC_LPG_REGION(pgsz, seg, addr, len, lpgaddr, lpgeaddr) { \
250 if ((len) != 0) { \
254 (len)), pgsz); \
1575 size_t len;
1589 if ((len = svd->swresv) != 0) {
1594 seg, len, 0);
1789 size_t len;
1803 len = eaddr - saddr;
1805 free_vp_pages(vp, off, len);
1817 size_t len;
1824 len = cb->hcb_end_addr - cb->hcb_start_addr;
1826 free_vp_pages(svd->vp, svd->offset + off, len);
1855 segvn_unmap(struct seg *seg, caddr_t addr, size_t len)
1909 if (addr < seg->s_base || addr + len > seg->s_base + seg->s_size ||
1910 (len & PAGEOFFSET) || ((uintptr_t)addr & PAGEOFFSET)) {
1918 if (!IS_P2ALIGNED(addr, pgsz) || !IS_P2ALIGNED(len, pgsz)) {
1919 ASSERT(seg->s_base != addr || seg->s_size != len);
1941 err = segvn_demote_range(seg, addr, len, SDR_END, 0);
1955 seg->s_as, addr, len, svd->prot, svd->maxprot,
1968 (void) segvn_lockop(seg, addr, len, 0, MC_UNLOCK, NULL, 0);
1997 hat_unload_callback(seg->s_as->a_hat, addr, len,
2010 if (addr == seg->s_base && len == seg->s_size) {
2016 dpages = btop(len);
2057 svd->anon_index, len,
2062 len);
2068 svd->anon_index, len);
2077 anon_unresv_zone(len,
2079 amp->swresv -= len;
2086 svd->offset += len;
2088 seg->s_base += len;
2089 seg->s_size -= len;
2113 svd->swresv -= len;
2115 unlen = len;
2121 seg, len, 0);
2130 if (addr + len == seg->s_base + seg->s_size) {
2167 an_idx, len,
2171 len);
2177 an_idx, len);
2186 anon_unresv_zone(len,
2188 amp->swresv -= len;
2194 seg->s_size -= len;
2217 svd->swresv -= len;
2219 unlen = len;
2225 "anon proc:%p %lu %u", seg, len, 0);
2236 nbase = addr + len; /* new seg base */
2320 anon_free_pages(amp->ahp, an_idx, len,
2324 len);
2329 anon_shmap_free_pages(amp, an_idx, len);
2338 anon_unresv_zone(len,
2340 amp->swresv -= len;
2393 if (seg->s_size + nseg->s_size + len !=
2401 unlen = len;
2407 seg, len, 0);
2419 size_t len;
2487 if ((len = amp->swresv) != 0) {
2488 anon_unresv_zone(len,
2491 "anon proc:%p %lu %u", seg, len, 0);
2519 if ((len = svd->swresv) != 0) {
2523 seg, len, 0);
2560 * Caller must always match addr and len of a softunlock with a previous
2561 * softlock with exactly the same addr and len.
2564 segvn_softunlock(struct seg *seg, caddr_t addr, size_t len, enum seg_rw rw)
2583 hat_unlock_region(seg->s_as->a_hat, addr, len, svd->rcookie);
2585 hat_unlock(seg->s_as->a_hat, addr, len);
2587 for (adr = addr; adr < addr + len; adr += PAGESIZE) {
2631 ASSERT(svd->softlockcnt >= btop(len));
2632 if (!atomic_add_long_nv((ulong_t *)&svd->softlockcnt, -btop(len))) {
4922 segvn_fault(struct hat *hat, struct seg *seg, caddr_t addr, size_t len,
4958 CALC_LPG_REGION(pgsz, seg, addr, len, lpgaddr, lpgeaddr);
5088 if (!demote && len > PAGESIZE) {
5090 CALC_LPG_REGION(pgsz, seg, addr, len, lpgaddr,
5163 CALC_LPG_REGION(pgsz, seg, addr, len, lpgaddr, lpgeaddr);
5166 lpgeaddr, type, rw, addr, addr + len, brkcow);
5169 lpgeaddr, type, rw, addr, addr + len, brkcow);
5202 for (a = addr; a < addr + len; a += PAGESIZE, index++) {
5211 hat_chgprot(seg->s_as->a_hat, addr, len, svd->prot);
5345 vp_len = len;
5358 if (len <= PAGESIZE)
5371 if (len > ptob((sizeof (pl) / sizeof (pl[0])) - 1)) {
5377 (btop(len) + 1) * sizeof (page_t *);
5380 plsz = len;
5393 plsz = len;
5484 for (a = addr; a < addr + len; a += PAGESIZE, off += PAGESIZE) {
5669 segvn_setprot(struct seg *seg, caddr_t addr, size_t len, uint_t prot)
5748 if (!IS_P2ALIGNED(addr, pgsz) || !IS_P2ALIGNED(len, pgsz)) {
5750 ASSERT(seg->s_base != addr || seg->s_size != len);
5760 err = segvn_demote_range(seg, addr, len,
5766 err = segvn_demote_range(seg, addr, len,
5801 len == seg->s_size &&
5810 * to len.
5820 addr + len)];
5830 sz = len;
5877 len == seg->s_size && svd->pageprot == 0) {
5888 if (addr == seg->s_base && len == seg->s_size && svd->vpage == NULL) {
5924 evp = &svd->vpage[seg_page(seg, addr + len)];
6008 len = (svp - &svd->vpage[seg_page(seg, addr)]) *
6010 ASSERT(seg->s_szc == 0 || IS_P2ALIGNED(len, pgsz));
6011 if (len != 0)
6013 len, HAT_UNLOAD);
6024 evp = &svd->vpage[seg_page(seg, addr + len)];
6048 hat_unload(seg->s_as->a_hat, addr, len, HAT_UNLOAD);
6057 hat_chgattr(seg->s_as->a_hat, addr, len, prot);
6070 segvn_setpagesize(struct seg *seg, caddr_t addr, size_t len, uint_t szc)
6076 caddr_t eaddr = addr + len, a;
6196 err = segvn_demote_range(seg, addr, len, SDR_RANGE, 0);
6714 * or the ends (SDR_END) by addr/len.
6722 size_t len,
6726 caddr_t eaddr = addr + len;
6741 ASSERT(seg->s_base != addr || seg->s_size != len);
6747 CALC_LPG_REGION(pgsz, seg, addr, len, lpgaddr, lpgeaddr);
6861 segvn_checkprot(struct seg *seg, caddr_t addr, size_t len, uint_t prot)
6883 evp = &svd->vpage[seg_page(seg, addr + len)];
6895 segvn_getprot(struct seg *seg, caddr_t addr, size_t len, uint_t *protv)
6898 size_t pgno = seg_page(seg, addr + len) - seg_page(seg, addr) + 1;
7242 segvn_sync(struct seg *seg, caddr_t addr, size_t len, int attr, uint_t flags)
7342 err = VOP_PUTPAGE(svd->vp, (offset_t)offset, len,
7351 for (eaddr = addr + len; addr < eaddr; addr += PAGESIZE) {
7468 segvn_incore(struct seg *seg, caddr_t addr, size_t len, char *vec)
7488 bzero(vec, btopr(len));
7489 return (len); /* no anonymous pages created yet */
7493 ep = seg_page(seg, addr + len);
7578 return (len);
7629 segvn_lockop(struct seg *seg, caddr_t addr, size_t len,
7741 evp = &svd->vpage[seg_page(seg, addr + len)];
7763 i_edx = svd->anon_index + seg_page(seg, addr + len);
8063 segvn_advise(struct seg *seg, caddr_t addr, size_t len, uint_t behav)
8189 svd->anon_index + page, len, behav, &purged);
8224 if ((addr == seg->s_base) && (len == seg->s_size)) {
8232 policy = lgrp_madv_to_policy(behav, len, svd->type);
8235 svd->anon_index, vp, svd->offset, len);
8248 &svd->policy_info, len);
8263 page_mark_migrate(seg, addr, len, amp, svd->anon_index,
8284 addr + len == next->s_base)
8310 hat_unload(seg->s_as->a_hat, addr, len,
8361 len = P2ROUNDUP(len, pgsz);
8367 policy = lgrp_madv_to_policy(behav, len, svd->type);
8374 anon_index, vp, off, len);
8402 page_mark_migrate(seg, addr, len, amp, svd->anon_index,
8427 eaddr = addr + len;
8544 hat_unload(seg->s_as->a_hat, addr, len, HAT_UNLOAD);
8549 evpp = &svd->vpage[page + (len >> PAGESHIFT)];
8573 segvn_inherit(struct seg *seg, caddr_t addr, size_t len, uint_t behav)
8611 if ((addr == seg->s_base) && (len == seg->s_size)) {
8632 evpp = &svd->vpage[page + (len >> PAGESHIFT)];
8806 segvn_pagelock(struct seg *seg, caddr_t addr, size_t len, struct page ***ppp,
8900 * as_pagelock() call's addr and len.
8908 CALC_LPG_REGION(pgsz, seg, addr, len, lpgaddr, lpgeaddr);
8910 } else if (len < segvn_pglock_comb_thrshld) {
8912 lpgeaddr = addr + len;
8977 lpgeaddr = addr + len;
9000 if (svd->pageprot && lpgeaddr != addr + len) {
9004 vp = &svd->vpage[seg_page(seg, addr + len)];
9014 lpgeaddr = addr + len;
9047 for (a = addr; a < addr + len; a += PAGESIZE) {
9066 npages = btop(len);
9078 (*preclaim_callback)(ptag, paddr, len, *ppp, rw, 0);
9082 len = lpgeaddr - lpgaddr;
9083 npages = btop(len);
9084 seg_pinactive(seg, pamp, paddr, len,
9169 ea = addr + len;
9267 len = lpgeaddr - lpgaddr;
9278 npages = btop(len);
9298 for (a = addr; a < addr + len; a += PAGESIZE, anon_index++) {
9381 if (a >= addr + len) {
9387 wlen = len;
9396 (void) seg_pinsert(seg, pamp, paddr, len, wlen, pl,
9458 segvn_reclaim(void *ptag, caddr_t addr, size_t len, struct page **pplist,
9466 npages = np = btop(len);
9535 shamp_reclaim(void *ptag, caddr_t addr, size_t len, struct page **pplist,
9542 npages = np = btop(len);
9648 sameprot(struct seg *seg, caddr_t a, size_t len)
9652 spgcnt_t pages = btop(len);