Lines Matching refs:cm_entry
541 struct cm_xprt *cm_entry; in clnt_zone_destroy() local
546 while ((cm_entry = *cmp) != NULL) { in clnt_zone_destroy()
547 if (cm_entry->x_zoneid == zoneid) { in clnt_zone_destroy()
548 *cmp = cm_entry->x_next; in clnt_zone_destroy()
549 cm_entry->x_next = freelist; in clnt_zone_destroy()
550 freelist = cm_entry; in clnt_zone_destroy()
552 cmp = &cm_entry->x_next; in clnt_zone_destroy()
556 while ((cm_entry = freelist) != NULL) { in clnt_zone_destroy()
557 freelist = cm_entry->x_next; in clnt_zone_destroy()
558 connmgr_close(cm_entry); in clnt_zone_destroy()
792 struct cm_xprt *cm_entry = NULL; in clnt_cots_kcallit() local
825 if (cm_entry) { in clnt_cots_kcallit()
826 connmgr_release(cm_entry); in clnt_cots_kcallit()
827 cm_entry = NULL; in clnt_cots_kcallit()
891 cm_entry = connmgr_wrapget(retryaddr, &cwait, p); in clnt_cots_kcallit()
893 if (cm_entry == NULL) { in clnt_cots_kcallit()
1007 p->cku_ctime != cm_entry->x_ctime) { in clnt_cots_kcallit()
1008 p->cku_ctime = cm_entry->x_ctime; in clnt_cots_kcallit()
1028 tidu_size = cm_entry->x_tidu_size; in clnt_cots_kcallit()
1114 wq = cm_entry->x_wq; in clnt_cots_kcallit()
1403 if (cm_entry) { in clnt_cots_kcallit()
1411 connmgr_cancelconn(cm_entry); in clnt_cots_kcallit()
1412 cm_entry = NULL; in clnt_cots_kcallit()
1514 if (cm_entry) in clnt_cots_kcallit()
1515 connmgr_release(cm_entry); in clnt_cots_kcallit()
1628 struct cm_xprt *cm_entry; in conn_kstat_update() local
1637 cm_entry = (struct cm_xprt *)ksp->ks_private; in conn_kstat_update()
1640 cm_ksp_data->x_wq.value.ui32 = (uint32_t)(uintptr_t)cm_entry->x_wq; in conn_kstat_update()
1641 cm_ksp_data->x_family.value.ui32 = cm_entry->x_family; in conn_kstat_update()
1642 cm_ksp_data->x_rdev.value.ui32 = (uint32_t)cm_entry->x_rdev; in conn_kstat_update()
1643 cm_ksp_data->x_time.value.ui32 = cm_entry->x_time; in conn_kstat_update()
1644 cm_ksp_data->x_ref.value.ui32 = cm_entry->x_ref; in conn_kstat_update()
1645 cm_ksp_data->x_state.value.ui32 = cm_entry->x_state_flags; in conn_kstat_update()
1647 if (cm_entry->x_server.buf) { in conn_kstat_update()
1649 if (cm_entry->x_family == AF_INET && in conn_kstat_update()
1650 cm_entry->x_server.len == in conn_kstat_update()
1654 cm_entry->x_server.buf; in conn_kstat_update()
1660 } else if (cm_entry->x_family == AF_INET6 && in conn_kstat_update()
1661 cm_entry->x_server.len >= in conn_kstat_update()
1665 sin6 = (struct sockaddr_in6 *)cm_entry->x_server.buf; in conn_kstat_update()
1672 sa = (struct sockaddr_in *)cm_entry->x_server.buf; in conn_kstat_update()
1705 connmgr_cwait(struct cm_xprt *cm_entry, const struct timeval *waitp, in connmgr_cwait() argument
1721 old_state = cm_entry->x_state_flags; in connmgr_cwait()
1733 while ((cv_stat = cv_timedwait(&cm_entry->x_conn_cv, in connmgr_cwait()
1735 cm_entry->x_state_flags == old_state) in connmgr_cwait()
1738 while ((cv_stat = cv_timedwait_sig(&cm_entry->x_conn_cv, in connmgr_cwait()
1740 cm_entry->x_state_flags == old_state) in connmgr_cwait()
1747 if ((cm_entry->x_state_flags & (X_BADSTATES|X_CONNECTED)) == in connmgr_cwait()
1769 struct cm_xprt *cm_entry; in connmgr_wrapget() local
1771 cm_entry = connmgr_get(retryaddr, waitp, &p->cku_addr, p->cku_addrfmly, in connmgr_wrapget()
1775 if (cm_entry == NULL) { in connmgr_wrapget()
1791 return (cm_entry); in connmgr_wrapget()
1817 struct cm_xprt *cm_entry; in connmgr_get() local
1837 cm_entry = lru_entry = NULL; in connmgr_get()
1840 while ((cm_entry = *cmp) != NULL) { in connmgr_get()
1841 ASSERT(cm_entry != cm_entry->x_next); in connmgr_get()
1846 if (cm_entry->x_needdis) { in connmgr_get()
1847 CONN_HOLD(cm_entry); in connmgr_get()
1848 connmgr_dis_and_wait(cm_entry); in connmgr_get()
1849 connmgr_release(cm_entry); in connmgr_get()
1862 if ((cm_entry->x_state_flags & (X_DEAD|X_THREAD)) == in connmgr_get()
1864 mutex_enter(&cm_entry->x_lock); in connmgr_get()
1865 if (cm_entry->x_ref != 0) { in connmgr_get()
1870 cmp = &cm_entry->x_next; in connmgr_get()
1871 mutex_exit(&cm_entry->x_lock); in connmgr_get()
1874 mutex_exit(&cm_entry->x_lock); in connmgr_get()
1875 *cmp = cm_entry->x_next; in connmgr_get()
1877 connmgr_close(cm_entry); in connmgr_get()
1883 if ((cm_entry->x_state_flags & X_BADSTATES) == 0 && in connmgr_get()
1884 cm_entry->x_zoneid == zoneid && in connmgr_get()
1885 cm_entry->x_rdev == device && in connmgr_get()
1886 destaddr->len == cm_entry->x_server.len && in connmgr_get()
1887 bcmp(destaddr->buf, cm_entry->x_server.buf, in connmgr_get()
1893 if (cm_entry->x_connected == FALSE) { in connmgr_get()
1906 return (connmgr_wrapconnect(cm_entry, in connmgr_get()
1913 lru_entry = cm_entry; in connmgr_get()
1916 cmp = &cm_entry->x_next; in connmgr_get()
1975 while ((cm_entry = *cmp) != NULL) { in connmgr_get()
1976 ASSERT(cm_entry != cm_entry->x_next); in connmgr_get()
1983 if (zoneid != cm_entry->x_zoneid || in connmgr_get()
1984 device != cm_entry->x_rdev || in connmgr_get()
1985 retryaddr->len != cm_entry->x_src.len || in connmgr_get()
1986 bcmp(retryaddr->buf, cm_entry->x_src.buf, in connmgr_get()
1988 cmp = &cm_entry->x_next; in connmgr_get()
1995 if (cm_entry->x_needdis) { in connmgr_get()
1996 CONN_HOLD(cm_entry); in connmgr_get()
1997 connmgr_dis_and_wait(cm_entry); in connmgr_get()
1998 connmgr_release(cm_entry); in connmgr_get()
2010 if ((cm_entry->x_state_flags & (X_DEAD|X_THREAD)) == in connmgr_get()
2012 mutex_enter(&cm_entry->x_lock); in connmgr_get()
2013 if (cm_entry->x_ref != 0) { in connmgr_get()
2018 cmp = &cm_entry->x_next; in connmgr_get()
2019 mutex_exit(&cm_entry->x_lock); in connmgr_get()
2022 mutex_exit(&cm_entry->x_lock); in connmgr_get()
2023 *cmp = cm_entry->x_next; in connmgr_get()
2025 connmgr_close(cm_entry); in connmgr_get()
2039 if (destaddr->len != cm_entry->x_server.len || in connmgr_get()
2040 bcmp(destaddr->buf, cm_entry->x_server.buf, in connmgr_get()
2045 " to us!\n", (void *)cm_entry->x_tiptr); in connmgr_get()
2059 if (cm_entry->x_connected == FALSE) { in connmgr_get()
2060 return (connmgr_wrapconnect(cm_entry, in connmgr_get()
2064 CONN_HOLD(cm_entry); in connmgr_get()
2066 cm_entry->x_time = ddi_get_lbolt(); in connmgr_get()
2070 (void *)cm_entry); in connmgr_get()
2071 return (cm_entry); in connmgr_get()
2091 cm_entry = (struct cm_xprt *) in connmgr_get()
2094 cm_entry->x_server.buf = kmem_alloc(destaddr->len, KM_SLEEP); in connmgr_get()
2095 bcopy(destaddr->buf, cm_entry->x_server.buf, destaddr->len); in connmgr_get()
2096 cm_entry->x_server.len = cm_entry->x_server.maxlen = destaddr->len; in connmgr_get()
2098 cm_entry->x_state_flags = X_THREAD; in connmgr_get()
2099 cm_entry->x_ref = 1; in connmgr_get()
2100 cm_entry->x_family = addrfmly; in connmgr_get()
2101 cm_entry->x_rdev = device; in connmgr_get()
2102 cm_entry->x_zoneid = zoneid; in connmgr_get()
2103 mutex_init(&cm_entry->x_lock, NULL, MUTEX_DEFAULT, NULL); in connmgr_get()
2104 cv_init(&cm_entry->x_cv, NULL, CV_DEFAULT, NULL); in connmgr_get()
2105 cv_init(&cm_entry->x_conn_cv, NULL, CV_DEFAULT, NULL); in connmgr_get()
2106 cv_init(&cm_entry->x_dis_cv, NULL, CV_DEFAULT, NULL); in connmgr_get()
2129 cm_entry->x_next = cm_hd; in connmgr_get()
2130 cm_hd = cm_entry; in connmgr_get()
2145 connmgr_cancelconn(cm_entry); in connmgr_get()
2155 connmgr_cancelconn(cm_entry); in connmgr_get()
2165 connmgr_cancelconn(cm_entry); in connmgr_get()
2172 cm_entry->x_wq = wq; in connmgr_get()
2181 connmgr_cancelconn(cm_entry); in connmgr_get()
2220 connmgr_cancelconn(cm_entry); in connmgr_get()
2228 connmgr_cancelconn(cm_entry); in connmgr_get()
2247 connected = connmgr_connect(cm_entry, wq, destaddr, addrfmly, in connmgr_get()
2260 cm_entry->x_src.buf = kmem_alloc(srcaddr->len, KM_SLEEP); in connmgr_get()
2261 bcopy(srcaddr->buf, cm_entry->x_src.buf, srcaddr->len); in connmgr_get()
2262 cm_entry->x_src.len = cm_entry->x_src.maxlen = srcaddr->len; in connmgr_get()
2265 cm_entry->x_tiptr = tiptr; in connmgr_get()
2266 cm_entry->x_time = ddi_get_lbolt(); in connmgr_get()
2269 cm_entry->x_ordrel = TRUE; in connmgr_get()
2271 cm_entry->x_ordrel = FALSE; in connmgr_get()
2273 cm_entry->x_tidu_size = tidu_size; in connmgr_get()
2275 if (cm_entry->x_early_disc) { in connmgr_get()
2284 cm_entry->x_connected = FALSE; in connmgr_get()
2286 cm_entry->x_connected = connected; in connmgr_get()
2295 cm_entry->x_early_disc = FALSE; in connmgr_get()
2296 cm_entry->x_needdis = (cm_entry->x_connected == FALSE); in connmgr_get()
2297 cm_entry->x_ctime = ddi_get_lbolt(); in connmgr_get()
2302 cm_entry->x_thread = FALSE; in connmgr_get()
2303 cv_broadcast(&cm_entry->x_conn_cv); in connmgr_get()
2305 if (cm_entry->x_connected == FALSE) { in connmgr_get()
2307 connmgr_release(cm_entry); in connmgr_get()
2313 return (cm_entry); in connmgr_get()
2330 struct cm_xprt *cm_entry, in connmgr_wrapconnect() argument
2344 CONN_HOLD(cm_entry); in connmgr_wrapconnect()
2350 if (cm_entry->x_thread == TRUE) { in connmgr_wrapconnect()
2351 rpcerr->re_status = connmgr_cwait(cm_entry, waitp, nosignal); in connmgr_wrapconnect()
2355 connmgr_release(cm_entry); in connmgr_wrapconnect()
2362 cm_entry->x_thread = TRUE; in connmgr_wrapconnect()
2364 while (cm_entry->x_needrel == TRUE) { in connmgr_wrapconnect()
2365 cm_entry->x_needrel = FALSE; in connmgr_wrapconnect()
2367 connmgr_sndrel(cm_entry); in connmgr_wrapconnect()
2376 connmgr_dis_and_wait(cm_entry); in connmgr_wrapconnect()
2383 connected = connmgr_connect(cm_entry, cm_entry->x_wq, in connmgr_wrapconnect()
2384 destaddr, addrfmly, &call, &cm_entry->x_tidu_size, in connmgr_wrapconnect()
2393 if (cm_entry->x_early_disc) { in connmgr_wrapconnect()
2402 cm_entry->x_connected = FALSE; in connmgr_wrapconnect()
2404 cm_entry->x_connected = connected; in connmgr_wrapconnect()
2414 cm_entry->x_early_disc = FALSE; in connmgr_wrapconnect()
2415 cm_entry->x_needdis = (cm_entry->x_connected == FALSE); in connmgr_wrapconnect()
2423 cm_entry->x_ctime = ddi_get_lbolt(); in connmgr_wrapconnect()
2424 cm_entry->x_thread = FALSE; in connmgr_wrapconnect()
2426 cv_broadcast(&cm_entry->x_conn_cv); in connmgr_wrapconnect()
2428 if (cm_entry->x_connected == FALSE) { in connmgr_wrapconnect()
2430 connmgr_release(cm_entry); in connmgr_wrapconnect()
2442 if (srcaddr->len != cm_entry->x_src.len) { in connmgr_wrapconnect()
2444 ASSERT(cm_entry->x_src.len != 0); in connmgr_wrapconnect()
2445 srcaddr->buf = kmem_alloc(cm_entry->x_src.len, in connmgr_wrapconnect()
2447 srcaddr->maxlen = srcaddr->len = cm_entry->x_src.len; in connmgr_wrapconnect()
2449 bcopy(cm_entry->x_src.buf, srcaddr->buf, srcaddr->len); in connmgr_wrapconnect()
2451 cm_entry->x_time = ddi_get_lbolt(); in connmgr_wrapconnect()
2453 return (cm_entry); in connmgr_wrapconnect()
2460 connmgr_dis_and_wait(struct cm_xprt *cm_entry) in connmgr_dis_and_wait() argument
2464 while (cm_entry->x_needdis == TRUE) { in connmgr_dis_and_wait()
2467 (void *)cm_entry); in connmgr_dis_and_wait()
2468 cm_entry->x_needdis = FALSE; in connmgr_dis_and_wait()
2469 cm_entry->x_waitdis = TRUE; in connmgr_dis_and_wait()
2471 connmgr_snddis(cm_entry); in connmgr_dis_and_wait()
2476 if (cm_entry->x_waitdis == TRUE) { in connmgr_dis_and_wait()
2481 (void *)cm_entry); in connmgr_dis_and_wait()
2491 (void) cv_reltimedwait(&cm_entry->x_dis_cv, in connmgr_dis_and_wait()
2498 if (cm_entry->x_waitdis == FALSE) { in connmgr_dis_and_wait()
2503 "connection %p\n", (void *)cm_entry); in connmgr_dis_and_wait()
2504 cm_entry->x_needdis = TRUE; in connmgr_dis_and_wait()
2510 connmgr_cancelconn(struct cm_xprt *cm_entry) in connmgr_cancelconn() argument
2517 cm_entry->x_dead = TRUE; in connmgr_cancelconn()
2523 cm_entry->x_thread = FALSE; in connmgr_cancelconn()
2524 cv_broadcast(&cm_entry->x_conn_cv); in connmgr_cancelconn()
2527 connmgr_release(cm_entry); in connmgr_cancelconn()
2531 connmgr_close(struct cm_xprt *cm_entry) in connmgr_close() argument
2533 mutex_enter(&cm_entry->x_lock); in connmgr_close()
2534 while (cm_entry->x_ref != 0) { in connmgr_close()
2538 cv_wait(&cm_entry->x_cv, &cm_entry->x_lock); in connmgr_close()
2541 if (cm_entry->x_tiptr != NULL) in connmgr_close()
2542 (void) t_kclose(cm_entry->x_tiptr, 1); in connmgr_close()
2544 mutex_exit(&cm_entry->x_lock); in connmgr_close()
2545 if (cm_entry->x_ksp != NULL) { in connmgr_close()
2546 mutex_enter(cm_entry->x_ksp->ks_lock); in connmgr_close()
2547 cm_entry->x_ksp->ks_private = NULL; in connmgr_close()
2548 mutex_exit(cm_entry->x_ksp->ks_lock); in connmgr_close()
2554 if (((struct cm_kstat_xprt *)(cm_entry->x_ksp->ks_data))-> in connmgr_close()
2556 kmem_free(((struct cm_kstat_xprt *)(cm_entry->x_ksp-> in connmgr_close()
2559 kmem_free(cm_entry->x_ksp->ks_data, in connmgr_close()
2560 cm_entry->x_ksp->ks_data_size); in connmgr_close()
2561 kstat_delete(cm_entry->x_ksp); in connmgr_close()
2564 mutex_destroy(&cm_entry->x_lock); in connmgr_close()
2565 cv_destroy(&cm_entry->x_cv); in connmgr_close()
2566 cv_destroy(&cm_entry->x_conn_cv); in connmgr_close()
2567 cv_destroy(&cm_entry->x_dis_cv); in connmgr_close()
2569 kmem_free(cm_entry->x_server.buf, cm_entry->x_server.maxlen); in connmgr_close()
2570 kmem_free(cm_entry->x_src.buf, cm_entry->x_src.maxlen); in connmgr_close()
2571 kmem_free(cm_entry, sizeof (struct cm_xprt)); in connmgr_close()
2579 connmgr_release(struct cm_xprt *cm_entry) in connmgr_release() argument
2581 mutex_enter(&cm_entry->x_lock); in connmgr_release()
2582 cm_entry->x_ref--; in connmgr_release()
2583 if (cm_entry->x_ref == 0) in connmgr_release()
2584 cv_signal(&cm_entry->x_cv); in connmgr_release()
2585 mutex_exit(&cm_entry->x_lock); in connmgr_release()
2629 struct cm_xprt *cm_entry, in connmgr_connect() argument
2800 if (cm_entry->x_ksp != NULL) in connmgr_connect()
2809 if ((cm_entry->x_ksp = kstat_create_zone("unix", kstat_instance, in connmgr_connect()
2812 KSTAT_FLAG_VIRTUAL, cm_entry->x_zoneid)) == NULL) { in connmgr_connect()
2816 cm_entry->x_ksp->ks_lock = &connmgr_lock; in connmgr_connect()
2817 cm_entry->x_ksp->ks_private = cm_entry; in connmgr_connect()
2818 cm_entry->x_ksp->ks_data_size = ((INET6_ADDRSTRLEN * sizeof (char)) in connmgr_connect()
2820 cm_entry->x_ksp->ks_data = kmem_alloc(cm_entry->x_ksp->ks_data_size, in connmgr_connect()
2822 bcopy(&cm_kstat_template, cm_entry->x_ksp->ks_data, in connmgr_connect()
2823 cm_entry->x_ksp->ks_data_size); in connmgr_connect()
2824 ((struct cm_kstat_xprt *)(cm_entry->x_ksp->ks_data))-> in connmgr_connect()
2828 cm_entry->x_ksp->ks_update = conn_kstat_update; in connmgr_connect()
2829 kstat_install(cm_entry->x_ksp); in connmgr_connect()
3044 connmgr_sndrel(struct cm_xprt *cm_entry) in connmgr_sndrel() argument
3048 queue_t *q = cm_entry->x_wq; in connmgr_sndrel()
3052 cm_entry->x_needrel = TRUE; in connmgr_sndrel()
3074 connmgr_snddis(struct cm_xprt *cm_entry) in connmgr_snddis() argument
3078 queue_t *q = cm_entry->x_wq; in connmgr_snddis()
3083 cm_entry->x_needdis = TRUE; in connmgr_snddis()
3378 struct cm_xprt *cm_entry; in clnt_dispatch_notifyall() local
3397 for (cm_entry = cm_hd; cm_entry; cm_entry = cm_entry->x_next) { in clnt_dispatch_notifyall()
3398 ASSERT(cm_entry != cm_entry->x_next); in clnt_dispatch_notifyall()
3399 if (cm_entry->x_wq == q) { in clnt_dispatch_notifyall()
3405 if (cm_entry->x_dead) { in clnt_dispatch_notifyall()
3408 (void *)cm_entry); in clnt_dispatch_notifyall()
3422 if (cm_entry->x_connected || in clnt_dispatch_notifyall()
3423 cm_entry->x_doomed) { in clnt_dispatch_notifyall()
3424 if (cm_entry->x_ordrel) { in clnt_dispatch_notifyall()
3425 if (cm_entry->x_closing == in clnt_dispatch_notifyall()
3436 cm_entry->x_dead = TRUE; in clnt_dispatch_notifyall()
3445 cm_entry->x_closing = TRUE; in clnt_dispatch_notifyall()
3446 connmgr_sndrel(cm_entry); in clnt_dispatch_notifyall()
3449 cm_entry->x_dead = TRUE; in clnt_dispatch_notifyall()
3484 cm_entry->x_dead = TRUE; in clnt_dispatch_notifyall()
3485 if (cm_entry->x_closing) { in clnt_dispatch_notifyall()
3497 if (cm_entry->x_thread) in clnt_dispatch_notifyall()
3498 cm_entry->x_early_disc = TRUE; in clnt_dispatch_notifyall()
3500 cm_entry->x_connected = FALSE; in clnt_dispatch_notifyall()
3501 cm_entry->x_waitdis = TRUE; in clnt_dispatch_notifyall()
3502 connmgr_snddis(cm_entry); in clnt_dispatch_notifyall()
3509 cm_entry->x_waitdis = FALSE; in clnt_dispatch_notifyall()
3510 cv_signal(&cm_entry->x_dis_cv); in clnt_dispatch_notifyall()
3515 if (cm_entry->x_thread) in clnt_dispatch_notifyall()
3516 cm_entry->x_early_disc = TRUE; in clnt_dispatch_notifyall()
3518 cm_entry->x_connected = FALSE; in clnt_dispatch_notifyall()
3519 cm_entry->x_waitdis = TRUE; in clnt_dispatch_notifyall()
3521 connmgr_snddis(cm_entry); in clnt_dispatch_notifyall()
3532 if (cm_entry->x_closing) { in clnt_dispatch_notifyall()
3533 cm_entry->x_dead = TRUE; in clnt_dispatch_notifyall()
3539 if (cm_entry->x_thread) { in clnt_dispatch_notifyall()
3540 cm_entry->x_early_disc = TRUE; in clnt_dispatch_notifyall()
3542 cm_entry->x_dead = TRUE; in clnt_dispatch_notifyall()
3543 cm_entry->x_connected = FALSE; in clnt_dispatch_notifyall()