Lines Matching refs:dc
1707 struct dupcache *dc; in __svc_dupcache_init() local
1719 dc = malloc(sizeof (struct dupcache)); in __svc_dupcache_init()
1720 if (dc == NULL) { in __svc_dupcache_init()
1726 (void) rwlock_init(&(dc->dc_lock), USYNC_THREAD, NULL); in __svc_dupcache_init()
1728 dc->dc_time = *((time_t *)condition); in __svc_dupcache_init()
1730 dc->dc_time = DUPCACHE_TIME; in __svc_dupcache_init()
1731 dc->dc_buckets = DUPCACHE_BUCKETS; in __svc_dupcache_init()
1732 dc->dc_maxsz = DUPCACHE_MAXSZ; in __svc_dupcache_init()
1733 dc->dc_basis = basis; in __svc_dupcache_init()
1734 dc->dc_mru = NULL; in __svc_dupcache_init()
1735 dc->dc_hashtbl = malloc(dc->dc_buckets * in __svc_dupcache_init()
1737 if (dc->dc_hashtbl == NULL) { in __svc_dupcache_init()
1738 free(dc); in __svc_dupcache_init()
1745 dc->dc_hashtbl[i] = NULL; in __svc_dupcache_init()
1746 *xprt_cache = (char *)dc; in __svc_dupcache_init()
1779 struct dupcache *dc = (struct dupcache *)xprt_cache; in __svc_dup() local
1781 if (dc == NULL) { in __svc_dup()
1791 drhash = drxid % dc->dc_buckets; in __svc_dup()
1793 if ((rc = __svc_dupcache_check(req, resp_buf, resp_bufsz, dc, drxid, in __svc_dup()
1797 if ((dr = __svc_dupcache_victim(dc, timenow)) == NULL) in __svc_dup()
1800 if ((rc = __svc_dupcache_enter(req, dr, dc, drxid, drhash, timenow)) in __svc_dup()
1819 struct dupcache *dc, uint32_t drxid, uint32_t drhash) in __svc_dupcache_check() argument
1823 (void) rw_rdlock(&(dc->dc_lock)); in __svc_dupcache_check()
1824 dr = dc->dc_hashtbl[drhash]; in __svc_dupcache_check()
1835 (void) rw_unlock((&dc->dc_lock)); in __svc_dupcache_check()
1857 (void) rw_unlock(&(dc->dc_lock)); in __svc_dupcache_check()
1871 (void) rw_unlock(&(dc->dc_lock)); in __svc_dupcache_check()
1876 (void) rw_unlock(&(dc->dc_lock)); in __svc_dupcache_check()
1885 __svc_dupcache_victim(struct dupcache *dc, time_t timenow) in __svc_dupcache_victim() argument
1889 switch (dc->dc_basis) { in __svc_dupcache_victim()
1899 (void) rw_wrlock(&(dc->dc_lock)); in __svc_dupcache_victim()
1900 while ((dc->dc_mru) && (dr = dc->dc_mru->dr_next) && in __svc_dupcache_victim()
1901 ((timenow - dr->dr_time) > dc->dc_time)) { in __svc_dupcache_victim()
1919 __svc_dupcache_debug(dc); in __svc_dupcache_victim()
1921 (void) rw_unlock(&(dc->dc_lock)); in __svc_dupcache_victim()
1939 if (dc->dc_hashtbl[dr->dr_hash] == dr) in __svc_dupcache_victim()
1940 dc->dc_hashtbl[dr->dr_hash] = dr->dr_chain; in __svc_dupcache_victim()
1943 if (dc->dc_mru == dr) { in __svc_dupcache_victim()
1944 dc->dc_mru = NULL; in __svc_dupcache_victim()
1946 dc->dc_mru->dr_next = dr->dr_next; in __svc_dupcache_victim()
1947 dr->dr_next->dr_prev = dc->dc_mru; in __svc_dupcache_victim()
1952 (void) rw_unlock(&(dc->dc_lock)); in __svc_dupcache_victim()
1978 struct dupcache *dc, uint32_t drxid, uint32_t drhash, time_t timenow) in __svc_dupcache_enter() argument
2002 (void) rw_wrlock(&(dc->dc_lock)); in __svc_dupcache_enter()
2003 dr->dr_chain = dc->dc_hashtbl[drhash]; in __svc_dupcache_enter()
2005 if (dc->dc_hashtbl[drhash] != NULL) in __svc_dupcache_enter()
2006 dc->dc_hashtbl[drhash]->dr_prevchain = dr; in __svc_dupcache_enter()
2007 dc->dc_hashtbl[drhash] = dr; in __svc_dupcache_enter()
2008 (void) rw_unlock(&(dc->dc_lock)); in __svc_dupcache_enter()
2027 struct dupcache *dc = (struct dupcache *)xprt_cache; in __svc_dupdone() local
2029 if (dc == NULL) { in __svc_dupdone()
2045 drhash = drxid % dc->dc_buckets; in __svc_dupdone()
2049 dc, drxid, drhash)) == DUP_ERROR) { in __svc_dupdone()
2067 int status, struct dupcache *dc, uint32_t drxid, uint32_t drhash) in __svc_dupcache_update() argument
2072 (void) rw_wrlock(&(dc->dc_lock)); in __svc_dupcache_update()
2073 dr = dc->dc_hashtbl[drhash]; in __svc_dupcache_update()
2084 (void) rw_unlock(&(dc->dc_lock)); in __svc_dupcache_update()
2094 (void) rw_unlock(&(dc->dc_lock)); in __svc_dupcache_update()
2110 if (dc->dc_mru == NULL) { in __svc_dupcache_update()
2114 dr->dr_next = dc->dc_mru->dr_next; in __svc_dupcache_update()
2115 dc->dc_mru->dr_next->dr_prev = dr; in __svc_dupcache_update()
2116 dr->dr_prev = dc->dc_mru; in __svc_dupcache_update()
2117 dc->dc_mru->dr_next = dr; in __svc_dupcache_update()
2119 dc->dc_mru = dr; in __svc_dupcache_update()
2121 (void) rw_unlock(&(dc->dc_lock)); in __svc_dupcache_update()
2126 (void) rw_unlock(&(dc->dc_lock)); in __svc_dupcache_update()
2140 __svc_dupcache_debug(struct dupcache *dc) in __svc_dupcache_debug() argument
2147 for (i = 0; i < dc->dc_buckets; i++) { in __svc_dupcache_debug()
2149 dr = dc->dc_hashtbl[i]; in __svc_dupcache_debug()
2164 if (dc->dc_mru) { in __svc_dupcache_debug()
2165 dr = dc->dc_mru->dr_next; /* lru */ in __svc_dupcache_debug()
2166 while (dr != dc->dc_mru) { in __svc_dupcache_debug()