Lines Matching refs:ap

257 anon_addhash(struct anon *ap)
261 ASSERT(MUTEX_HELD(AH_MUTEX(ap->an_vp, ap->an_off)));
262 index = ANON_HASH(ap->an_vp, ap->an_off);
263 ap->an_hash = anon_hash[index];
264 anon_hash[index] = ap;
268 anon_rmhash(struct anon *ap)
272 ASSERT(MUTEX_HELD(AH_MUTEX(ap->an_vp, ap->an_off)));
274 for (app = &anon_hash[ANON_HASH(ap->an_vp, ap->an_off)];
276 if (*app == ap) {
277 *app = ap->an_hash;
417 struct anon *ap;
434 ap = (struct anon *)
436 if (ap) {
438 return (ap);
451 ap = (struct anon *)
453 if (ap) {
455 return (ap);
470 anon_set_ptr(struct anon_hdr *ahp, ulong_t an_idx, struct anon *ap, int flags)
507 *ap_addr = (*ap_addr & ~ANON_PTRMASK) | (uintptr_t)ap;
520 void *ap;
583 if ((ap = anon_get_ptr(sahp, s_idx)) != NULL) {
585 if (anon_set_ptr(dahp, d_idx, ap, flags) == ENOMEM)
989 struct anon *ap;
992 ap = kmem_cache_alloc(anon_cache, KM_SLEEP);
994 swap_alloc(ap);
996 ap->an_vp = vp;
997 ap->an_off = off;
999 ap->an_refcnt = 1;
1000 ap->an_pvp = NULL;
1001 ap->an_poff = 0;
1002 ahm = AH_MUTEX(ap->an_vp, ap->an_off);
1004 anon_addhash(ap);
1007 ANON_PRINT(A_ANON, ("anon_alloc: returning ap %p, vp %p\n",
1008 (void *)ap, (ap ? (void *)ap->an_vp : NULL)));
1009 return (ap);
1018 anon_swap_free(struct anon *ap, page_t *pp)
1022 ASSERT(ap != NULL);
1027 ASSERT(ap->an_refcnt != 0);
1028 ASSERT(pp->p_vnode == ap->an_vp);
1029 ASSERT(pp->p_offset == ap->an_off);
1031 if (ap->an_pvp == NULL)
1035 ahm = AH_MUTEX(ap->an_vp, ap->an_off);
1038 ASSERT(ap->an_refcnt != 0);
1039 ASSERT(pp->p_vnode == ap->an_vp);
1040 ASSERT(pp->p_offset == ap->an_off);
1042 if (ap->an_pvp != NULL) {
1043 swap_phys_free(ap->an_pvp, ap->an_poff, PAGESIZE);
1044 ap->an_pvp = NULL;
1045 ap->an_poff = 0;
1060 anon_decref(struct anon *ap)
1067 ahm = AH_MUTEX(ap->an_vp, ap->an_off);
1069 ASSERT(ap->an_refcnt != 0);
1070 if (ap->an_refcnt == 0)
1072 if (--ap->an_refcnt == 0) {
1073 swap_xlate(ap, &vp, &off);
1074 anon_rmhash(ap);
1075 if (ap->an_pvp != NULL)
1076 swap_phys_free(ap->an_pvp, ap->an_poff, PAGESIZE);
1092 ANON_PRINT(A_ANON, ("anon_decref: free ap %p, vp %p\n",
1093 (void *)ap, (void *)ap->an_vp));
1095 kmem_cache_free(anon_cache, ap);
1107 * anonpages_hash_lock[] held on the root ap ensures that if root's
1116 struct anon *ap;
1119 ap = anon_get_ptr(ahp, anon_index);
1120 if (ap == NULL)
1123 ahmpages = APH_MUTEX(ap->an_vp, ap->an_off);
1125 ASSERT(ap->an_refcnt >= 1);
1126 if (ap->an_refcnt == 1) {
1142 struct anon *ap;
1145 if ((ap = anon_get_ptr(ahp, anon_index)) != NULL &&
1146 ap->an_refcnt > 1)
1160 struct anon *ap = anon_get_ptr(ahp, an_idx);
1187 if (ap != NULL) {
1188 ahmpages = APH_MUTEX(ap->an_vp, ap->an_off);
1190 ASSERT((refcnt = ap->an_refcnt) != 0);
1192 if (ap->an_refcnt == 1) {
1202 if ((ap = anon_get_ptr(ahp, an_idx + i)) == NULL) {
1207 ASSERT(ap->an_refcnt == refcnt);
1208 ASSERT(ahmpages != NULL || ap->an_refcnt == 1);
1209 ASSERT(ahmpages == NULL || ap->an_refcnt > 1);
1212 swap_xlate(ap, &vp, &off);
1216 ahm = AH_MUTEX(ap->an_vp, ap->an_off);
1220 ap->an_refcnt--;
1221 ASSERT(ap->an_refcnt == 0);
1222 anon_rmhash(ap);
1223 if (ap->an_pvp)
1224 swap_phys_free(ap->an_pvp, ap->an_poff,
1237 kmem_cache_free(anon_cache, ap);
1257 ap = anon_get_ptr(ahp, an_idx + j);
1258 ASSERT(ap != NULL &&
1259 ap->an_refcnt == 1);
1260 swap_xlate(ap, &vp, &off);
1273 if (ap->an_pvp != NULL &&
1274 !vn_matchopval(ap->an_pvp,
1280 ap = anon_get_ptr(ahp, an_idx + j);
1281 ASSERT(ap != NULL &&
1282 ap->an_refcnt == 1);
1283 ahm = AH_MUTEX(ap->an_vp, ap->an_off);
1287 ap->an_refcnt--;
1288 ASSERT(ap->an_refcnt == 0);
1289 anon_rmhash(ap);
1290 if (ap->an_pvp)
1291 swap_phys_free(ap->an_pvp,
1292 ap->an_poff, PAGESIZE);
1294 kmem_cache_free(anon_cache, ap);
1320 ahm = AH_MUTEX(ap->an_vp, ap->an_off);
1322 ap->an_refcnt--;
1346 struct anon *ap;
1353 if ((ap = anon_get_next_ptr(old, &index)) == NULL)
1362 (void) anon_set_ptr(new, new_idx + off, ap, ANON_SLEEP);
1363 ahm = AH_MUTEX(ap->an_vp, ap->an_off);
1366 ap->an_refcnt++;
1395 struct anon *ap;
1439 if ((ap = anon_get_ptr(old, index + i)) == NULL) {
1445 ap = anon_alloc(NULL, 0);
1446 (void) anon_set_ptr(old, index + i, ap,
1457 ahmpages = APH_MUTEX(ap->an_vp, ap->an_off);
1460 ASSERT(refcnt = ap->an_refcnt);
1462 VM_STAT_COND_ADD(ap->an_refcnt > 1,
1465 (void) anon_set_ptr(new, new_idx + off + i, ap,
1467 ahm = AH_MUTEX(ap->an_vp, ap->an_off);
1469 ASSERT(ahmpages != NULL || ap->an_refcnt == 1);
1471 refcnt == ap->an_refcnt);
1472 ap->an_refcnt++;
1506 struct anon *ap;
1549 if ((ap = anon_get_ptr(ahp, an_idx)) == NULL) {
1564 pp = anon_private(&ap, seg, addr, prot, pl[0],
1570 (void) anon_set_ptr(ahp, an_idx, ap,
1574 ASSERT(ap->an_refcnt == 1);
1594 struct anon *ap;
1601 if ((ap = anon_get_next_ptr(ahp, &index)) == NULL)
1610 anon_decref(ap);
1677 struct anon *ap;
1699 if ((ap = anon_get_next_ptr(ahp, &index)) == NULL)
1710 ap = anon_get_ptr(ahp, index);
1711 ASSERT(ap != NULL);
1717 swap_xlate(ap, &vp, &off);
1742 ASSERT(ap->an_refcnt != 0);
1746 if (ap->an_refcnt > 1) {
1769 if (ap->an_pvp) {
1770 swap_phys_free(ap->an_pvp, ap->an_poff,
1772 ap->an_pvp = NULL;
1773 ap->an_poff = 0;
1783 if (--ap->an_refcnt == 0)
1784 anon_rmhash(ap);
1791 kmem_cache_free(anon_cache, ap);
1822 if (ap->an_pvp) {
1823 swap_phys_free(ap->an_pvp,
1824 ap->an_poff, PAGESIZE);
1825 ap->an_pvp = NULL;
1826 ap->an_poff = 0;
1855 ap = anon_get_ptr(ahp, index + i);
1856 if (ap == NULL)
1858 swap_xlate(ap, &vp, &off);
1861 ASSERT(ap->an_refcnt != 0);
1867 if (ap->an_refcnt > 1) {
1871 if (ap->an_pvp) {
1872 swap_phys_free(ap->an_pvp,
1873 ap->an_poff, PAGESIZE);
1874 ap->an_pvp = NULL;
1875 ap->an_poff = 0;
1912 struct anon *ap = *app;
1918 swap_xlate(ap, &vp, &off);
1927 ahm = AH_MUTEX(ap->an_vp, ap->an_off);
1929 if (ap->an_refcnt == 1)
1951 ahm = AH_MUTEX(ap->an_vp, ap->an_off);
1953 if (ap->an_refcnt != 1)
1990 struct anon *ap;
2015 if ((ap = anon_get_ptr(amp->ahp, start_idx)) != NULL) {
2016 err = anon_getpage(&ap, protp, pl, PAGESIZE, seg,
2035 ppa[0] = anon_zero(seg, addr, &ap, cred);
2038 (void) anon_set_ptr(amp->ahp, start_idx, ap,
2054 ap = anon_get_ptr(amp->ahp, start_idx);
2055 if (ap) {
2057 swap_xlate(ap, &vp, &off);
2106 if ((ap = anon_get_ptr(amp->ahp, an_idx)) !=
2108 err = anon_getpage(&ap, &vpprot, pl,
2147 if ((ap = anon_get_ptr(amp->ahp, an_idx)) == NULL) {
2160 ap = anon_alloc(NULL, 0);
2162 swap_xlate(ap, &vp, &off);
2276 if (ap->an_refcnt > 1) {
2286 (void) anon_set_ptr(amp->ahp, an_idx, ap, ANON_SLEEP);
2560 struct anon *ap, *oldap;
2581 ap = anon_get_ptr(amp->ahp, start_idx);
2582 ASSERT(ap == NULL || ap->an_refcnt >= 1);
2584 VM_STAT_COND_ADD(ap == NULL, anonvmstats.privatepages[1]);
2607 if (ap != NULL) {
2608 ahmpages = APH_MUTEX(ap->an_vp, ap->an_off);
2610 if (ap->an_refcnt == 1) {
2691 ap = anon_alloc(NULL, 0);
2693 swap_xlate(ap, &vp, &off);
2770 (void) anon_set_ptr(amp->ahp, an_idx, ap, ANON_SLEEP);
2798 struct anon *ap;
2809 *app = ap = anon_alloc(NULL, 0);
2810 swap_xlate(ap, &vp, &off);
2823 anon_decref(ap);
2855 struct anon *ap;
2898 ap = anon_get_ptr(amp->ahp, index);
2899 if (ap) {
2900 err = anon_getpage(&ap, &prot, anon_pl, PAGESIZE,
2914 if (ap->an_pvp != NULL) {
2916 ahm = AH_MUTEX(ap->an_vp, ap->an_off);
2918 if (ap->an_pvp != NULL) {
2919 swap_phys_free(ap->an_pvp,
2920 ap->an_poff, PAGESIZE);
2921 ap->an_pvp = NULL;
2922 ap->an_poff = 0;
3000 pp = anon_zero(seg, addr, &ap, cred);
3008 (void) anon_set_ptr(amp->ahp, index, ap, ANON_SLEEP);
3026 ap = anon_alloc(NULL, 0);
3027 swap_xlate(ap, &ap_vp, &ap_off);
3052 (void) anon_set_ptr(amp->ahp, index, ap, ANON_SLEEP);
3079 struct anon *ap;
3099 ap = anon_get_ptr(ahp, sidx);
3100 if (ap != NULL && private) {
3102 ahmpages = APH_MUTEX(ap->an_vp, ap->an_off);
3106 if (ap != NULL && ap->an_refcnt > 1) {
3124 ap = anon_get_ptr(ahp, sidx);
3125 if (ap != NULL) {
3126 if (ap->an_refcnt != 1) {
3129 pp = ppa[i] = page_lookup(ap->an_vp, ap->an_off,
3198 struct anon *ap;
3234 ap = anon_get_ptr(amp->ahp, an_idx);
3235 if (ap == NULL)
3237 err = anon_getpage(&ap, &vpprot, pl, PAGESIZE, seg, vaddr,
3460 struct anon *ap;
3464 ap = anon_get_ptr(ahp, anon_idx);
3465 if (ap == NULL) {