Lines Matching refs:dc

1701 	struct dupcache *dc;
1713 dc = malloc(sizeof (struct dupcache));
1714 if (dc == NULL) {
1720 (void) rwlock_init(&(dc->dc_lock), USYNC_THREAD, NULL);
1722 dc->dc_time = *((time_t *)condition);
1724 dc->dc_time = DUPCACHE_TIME;
1725 dc->dc_buckets = DUPCACHE_BUCKETS;
1726 dc->dc_maxsz = DUPCACHE_MAXSZ;
1727 dc->dc_basis = basis;
1728 dc->dc_mru = NULL;
1729 dc->dc_hashtbl = malloc(dc->dc_buckets *
1731 if (dc->dc_hashtbl == NULL) {
1732 free(dc);
1739 dc->dc_hashtbl[i] = NULL;
1740 *xprt_cache = (char *)dc;
1773 struct dupcache *dc = (struct dupcache *)xprt_cache;
1775 if (dc == NULL) {
1785 drhash = drxid % dc->dc_buckets;
1787 if ((rc = __svc_dupcache_check(req, resp_buf, resp_bufsz, dc, drxid,
1791 if ((dr = __svc_dupcache_victim(dc, timenow)) == NULL)
1794 if ((rc = __svc_dupcache_enter(req, dr, dc, drxid, drhash, timenow))
1805 * uint_t *resp_bufsz,truct dupcache *dc, uint32_t drxid,
1813 struct dupcache *dc, uint32_t drxid, uint32_t drhash)
1817 (void) rw_rdlock(&(dc->dc_lock));
1818 dr = dc->dc_hashtbl[drhash];
1830 (void) rw_unlock((&dc->dc_lock));
1852 (void) rw_unlock(&(dc->dc_lock));
1866 (void) rw_unlock(&(dc->dc_lock));
1871 (void) rw_unlock(&(dc->dc_lock));
1876 * __svc_dupcache_victim(struct dupcache *dc, time_t timenow)
1880 __svc_dupcache_victim(struct dupcache *dc, time_t timenow)
1884 switch (dc->dc_basis) {
1894 (void) rw_wrlock(&(dc->dc_lock));
1895 while ((dc->dc_mru) && (dr = dc->dc_mru->dr_next) &&
1896 ((timenow - dr->dr_time) > dc->dc_time)) {
1914 __svc_dupcache_debug(dc);
1916 (void) rw_unlock(&(dc->dc_lock));
1934 if (dc->dc_hashtbl[dr->dr_hash] == dr)
1935 dc->dc_hashtbl[dr->dr_hash] = dr->dr_chain;
1938 if (dc->dc_mru == dr) {
1939 dc->dc_mru = NULL;
1941 dc->dc_mru->dr_next = dr->dr_next;
1942 dr->dr_next->dr_prev = dc->dc_mru;
1947 (void) rw_unlock(&(dc->dc_lock));
1968 * struct dupcache *dc, uint32_t drxid, uint32_t drhash, time_t timenow)
1973 struct dupcache *dc, uint32_t drxid, uint32_t drhash, time_t timenow)
1997 (void) rw_wrlock(&(dc->dc_lock));
1998 dr->dr_chain = dc->dc_hashtbl[drhash];
2000 if (dc->dc_hashtbl[drhash] != NULL)
2001 dc->dc_hashtbl[drhash]->dr_prevchain = dr;
2002 dc->dc_hashtbl[drhash] = dr;
2003 (void) rw_unlock(&(dc->dc_lock));
2022 struct dupcache *dc = (struct dupcache *)xprt_cache;
2024 if (dc == NULL) {
2040 drhash = drxid % dc->dc_buckets;
2044 dc, drxid, drhash)) == DUP_ERROR) {
2054 * uint_t resp_bufsz, int status, struct dupcache *dc, uint32_t drxid,
2062 int status, struct dupcache *dc, uint32_t drxid, uint32_t drhash)
2067 (void) rw_wrlock(&(dc->dc_lock));
2068 dr = dc->dc_hashtbl[drhash];
2080 (void) rw_unlock(&(dc->dc_lock));
2090 (void) rw_unlock(&(dc->dc_lock));
2106 if (dc->dc_mru == NULL) {
2110 dr->dr_next = dc->dc_mru->dr_next;
2111 dc->dc_mru->dr_next->dr_prev = dr;
2112 dr->dr_prev = dc->dc_mru;
2113 dc->dc_mru->dr_next = dr;
2115 dc->dc_mru = dr;
2117 (void) rw_unlock(&(dc->dc_lock));
2122 (void) rw_unlock(&(dc->dc_lock));
2129 * __svc_dupcache_debug(struct dupcache *dc)
2136 __svc_dupcache_debug(struct dupcache *dc)
2143 for (i = 0; i < dc->dc_buckets; i++) {
2145 dr = dc->dc_hashtbl[i];
2160 if (dc->dc_mru) {
2161 dr = dc->dc_mru->dr_next; /* lru */
2162 while (dr != dc->dc_mru) {