Lines Matching defs:dc
1704 struct dupcache *dc;
1716 dc = malloc(sizeof (struct dupcache));
1717 if (dc == NULL) {
1723 (void) rwlock_init(&(dc->dc_lock), USYNC_THREAD, NULL);
1725 dc->dc_time = *((time_t *)condition);
1727 dc->dc_time = DUPCACHE_TIME;
1728 dc->dc_buckets = DUPCACHE_BUCKETS;
1729 dc->dc_maxsz = DUPCACHE_MAXSZ;
1730 dc->dc_basis = basis;
1731 dc->dc_mru = NULL;
1732 dc->dc_hashtbl = malloc(dc->dc_buckets *
1734 if (dc->dc_hashtbl == NULL) {
1735 free(dc);
1742 dc->dc_hashtbl[i] = NULL;
1743 *xprt_cache = (char *)dc;
1776 struct dupcache *dc = (struct dupcache *)xprt_cache;
1778 if (dc == NULL) {
1788 drhash = drxid % dc->dc_buckets;
1790 if ((rc = __svc_dupcache_check(req, resp_buf, resp_bufsz, dc, drxid,
1794 if ((dr = __svc_dupcache_victim(dc, timenow)) == NULL)
1797 if ((rc = __svc_dupcache_enter(req, dr, dc, drxid, drhash, timenow))
1808 * uint_t *resp_bufsz,truct dupcache *dc, uint32_t drxid,
1816 struct dupcache *dc, uint32_t drxid, uint32_t drhash)
1820 (void) rw_rdlock(&(dc->dc_lock));
1821 dr = dc->dc_hashtbl[drhash];
1832 (void) rw_unlock((&dc->dc_lock));
1854 (void) rw_unlock(&(dc->dc_lock));
1868 (void) rw_unlock(&(dc->dc_lock));
1873 (void) rw_unlock(&(dc->dc_lock));
1878 * __svc_dupcache_victim(struct dupcache *dc, time_t timenow)
1882 __svc_dupcache_victim(struct dupcache *dc, time_t timenow)
1886 switch (dc->dc_basis) {
1896 (void) rw_wrlock(&(dc->dc_lock));
1897 while ((dc->dc_mru) && (dr = dc->dc_mru->dr_next) &&
1898 ((timenow - dr->dr_time) > dc->dc_time)) {
1916 __svc_dupcache_debug(dc);
1918 (void) rw_unlock(&(dc->dc_lock));
1936 if (dc->dc_hashtbl[dr->dr_hash] == dr)
1937 dc->dc_hashtbl[dr->dr_hash] = dr->dr_chain;
1940 if (dc->dc_mru == dr) {
1941 dc->dc_mru = NULL;
1943 dc->dc_mru->dr_next = dr->dr_next;
1944 dr->dr_next->dr_prev = dc->dc_mru;
1949 (void) rw_unlock(&(dc->dc_lock));
1970 * struct dupcache *dc, uint32_t drxid, uint32_t drhash, time_t timenow)
1975 struct dupcache *dc, uint32_t drxid, uint32_t drhash, time_t timenow)
1999 (void) rw_wrlock(&(dc->dc_lock));
2000 dr->dr_chain = dc->dc_hashtbl[drhash];
2002 if (dc->dc_hashtbl[drhash] != NULL)
2003 dc->dc_hashtbl[drhash]->dr_prevchain = dr;
2004 dc->dc_hashtbl[drhash] = dr;
2005 (void) rw_unlock(&(dc->dc_lock));
2024 struct dupcache *dc = (struct dupcache *)xprt_cache;
2026 if (dc == NULL) {
2042 drhash = drxid % dc->dc_buckets;
2046 dc, drxid, drhash)) == DUP_ERROR) {
2056 * uint_t resp_bufsz, int status, struct dupcache *dc, uint32_t drxid,
2064 int status, struct dupcache *dc, uint32_t drxid, uint32_t drhash)
2069 (void) rw_wrlock(&(dc->dc_lock));
2070 dr = dc->dc_hashtbl[drhash];
2081 (void) rw_unlock(&(dc->dc_lock));
2091 (void) rw_unlock(&(dc->dc_lock));
2107 if (dc->dc_mru == NULL) {
2111 dr->dr_next = dc->dc_mru->dr_next;
2112 dc->dc_mru->dr_next->dr_prev = dr;
2113 dr->dr_prev = dc->dc_mru;
2114 dc->dc_mru->dr_next = dr;
2116 dc->dc_mru = dr;
2118 (void) rw_unlock(&(dc->dc_lock));
2123 (void) rw_unlock(&(dc->dc_lock));
2130 * __svc_dupcache_debug(struct dupcache *dc)
2137 __svc_dupcache_debug(struct dupcache *dc)
2144 for (i = 0; i < dc->dc_buckets; i++) {
2146 dr = dc->dc_hashtbl[i];
2161 if (dc->dc_mru) {
2162 dr = dc->dc_mru->dr_next; /* lru */
2163 while (dr != dc->dc_mru) {