• Home
  • Raw
  • Download

Lines Matching refs:cache

1138     Cache* cache;  member
1167 static void cache_flush_pending_requests_locked(struct resolv_cache* cache) { in cache_flush_pending_requests_locked() argument
1169 if (!cache) return; in cache_flush_pending_requests_locked()
1171 ri = cache->pending_requests.next; in cache_flush_pending_requests_locked()
1179 cache->pending_requests.next = NULL; in cache_flush_pending_requests_locked()
1186 static bool cache_has_pending_request_locked(resolv_cache* cache, const Entry* key, in cache_has_pending_request_locked() argument
1188 if (!cache || !key) return false; in cache_has_pending_request_locked()
1190 resolv_cache::pending_req_info* ri = cache->pending_requests.next; in cache_has_pending_request_locked()
1191 resolv_cache::pending_req_info* prev = &cache->pending_requests; in cache_has_pending_request_locked()
1211 static void _cache_notify_waiting_tid_locked(struct resolv_cache* cache, const Entry* key) { in _cache_notify_waiting_tid_locked() argument
1212 if (!cache || !key) return; in _cache_notify_waiting_tid_locked()
1214 resolv_cache::pending_req_info* ri = cache->pending_requests.next; in _cache_notify_waiting_tid_locked()
1215 resolv_cache::pending_req_info* prev = &cache->pending_requests; in _cache_notify_waiting_tid_locked()
1235 Cache* cache; in _resolv_cache_query_failed() local
1241 cache = find_named_cache_locked(netid); in _resolv_cache_query_failed()
1243 if (cache) { in _resolv_cache_query_failed()
1244 _cache_notify_waiting_tid_locked(cache, key); in _resolv_cache_query_failed()
1248 static void cache_flush_locked(Cache* cache) { in cache_flush_locked() argument
1251 for (nn = 0; nn < cache->max_entries; nn++) { in cache_flush_locked()
1252 Entry** pnode = (Entry**) &cache->entries[nn]; in cache_flush_locked()
1262 cache_flush_pending_requests_locked(cache); in cache_flush_locked()
1264 cache->mru_list.mru_next = cache->mru_list.mru_prev = &cache->mru_list; in cache_flush_locked()
1265 cache->num_entries = 0; in cache_flush_locked()
1266 cache->last_id = 0; in cache_flush_locked()
1272 struct resolv_cache* cache; in resolv_cache_create() local
1274 cache = (struct resolv_cache*) calloc(sizeof(*cache), 1); in resolv_cache_create()
1275 if (cache) { in resolv_cache_create()
1276 cache->max_entries = CONFIG_MAX_ENTRIES; in resolv_cache_create()
1277 cache->entries = (Entry*) calloc(sizeof(*cache->entries), cache->max_entries); in resolv_cache_create()
1278 if (cache->entries) { in resolv_cache_create()
1279 cache->mru_list.mru_prev = cache->mru_list.mru_next = &cache->mru_list; in resolv_cache_create()
1282 free(cache); in resolv_cache_create()
1283 cache = NULL; in resolv_cache_create()
1286 return cache; in resolv_cache_create()
1300 static void cache_dump_mru(Cache* cache) { in cache_dump_mru() argument
1304 p = bprint(temp, end, "MRU LIST (%2d): ", cache->num_entries); in cache_dump_mru()
1305 for (e = cache->mru_list.mru_next; e != &cache->mru_list; e = e->mru_next) in cache_dump_mru()
1325 static Entry** _cache_lookup_p(Cache* cache, Entry* key) { in _cache_lookup_p() argument
1326 int index = key->hash % cache->max_entries; in _cache_lookup_p()
1327 Entry** pnode = (Entry**) &cache->entries[index]; in _cache_lookup_p()
1346 static void _cache_add_p(Cache* cache, Entry** lookup, Entry* e) { in _cache_add_p() argument
1348 e->id = ++cache->last_id; in _cache_add_p()
1349 entry_mru_add(e, &cache->mru_list); in _cache_add_p()
1350 cache->num_entries += 1; in _cache_add_p()
1352 LOG(INFO) << __func__ << ": entry " << e->id << " added (count=" << cache->num_entries << ")"; in _cache_add_p()
1359 static void _cache_remove_p(Cache* cache, Entry** lookup) { in _cache_remove_p() argument
1362 LOG(INFO) << __func__ << ": entry " << e->id << " removed (count=" << cache->num_entries - 1 in _cache_remove_p()
1368 cache->num_entries -= 1; in _cache_remove_p()
1373 static void _cache_remove_oldest(Cache* cache) { in _cache_remove_oldest() argument
1374 Entry* oldest = cache->mru_list.mru_prev; in _cache_remove_oldest()
1375 Entry** lookup = _cache_lookup_p(cache, oldest); in _cache_remove_oldest()
1383 _cache_remove_p(cache, lookup); in _cache_remove_oldest()
1388 static void _cache_remove_expired(Cache* cache) { in _cache_remove_expired() argument
1392 for (e = cache->mru_list.mru_next; e != &cache->mru_list;) { in _cache_remove_expired()
1395 Entry** lookup = _cache_lookup_p(cache, e); in _cache_remove_expired()
1401 _cache_remove_p(cache, lookup); in _cache_remove_expired()
1425 Cache* cache; in _resolv_cache_lookup() local
1438 cache = find_named_cache_locked(netid); in _resolv_cache_lookup()
1439 if (cache == NULL) { in _resolv_cache_lookup()
1446 lookup = _cache_lookup_p(cache, &key); in _resolv_cache_lookup()
1456 if (!cache_has_pending_request_locked(cache, &key, true)) { in _resolv_cache_lookup()
1465 [netid, &cache, &key]() REQUIRES(cache_mutex) { in _resolv_cache_lookup()
1467 cache = find_named_cache_locked(netid); in _resolv_cache_lookup()
1468 return !cache_has_pending_request_locked(cache, &key, false); in _resolv_cache_lookup()
1470 if (!cache) { in _resolv_cache_lookup()
1479 lookup = _cache_lookup_p(cache, &key); in _resolv_cache_lookup()
1493 _cache_remove_p(cache, lookup); in _resolv_cache_lookup()
1507 if (e != cache->mru_list.mru_next) { in _resolv_cache_lookup()
1509 entry_mru_add(e, &cache->mru_list); in _resolv_cache_lookup()
1522 Cache* cache = NULL; in _resolv_cache_add() local
1533 cache = find_named_cache_locked(netid); in _resolv_cache_add()
1534 if (cache == NULL) { in _resolv_cache_add()
1546 lookup = _cache_lookup_p(cache, key); in _resolv_cache_add()
1552 _cache_notify_waiting_tid_locked(cache, key); in _resolv_cache_add()
1556 if (cache->num_entries >= cache->max_entries) { in _resolv_cache_add()
1557 _cache_remove_expired(cache); in _resolv_cache_add()
1558 if (cache->num_entries >= cache->max_entries) { in _resolv_cache_add()
1559 _cache_remove_oldest(cache); in _resolv_cache_add()
1562 lookup = _cache_lookup_p(cache, key); in _resolv_cache_add()
1566 _cache_notify_waiting_tid_locked(cache, key); in _resolv_cache_add()
1576 _cache_add_p(cache, lookup, e); in _resolv_cache_add()
1580 cache_dump_mru(cache); in _resolv_cache_add()
1581 _cache_notify_waiting_tid_locked(cache, key); in _resolv_cache_add()
1608 resolv_cache* cache = find_named_cache_locked(netid); in resolv_create_cache_for_net_locked() local
1610 if (cache) { in resolv_create_cache_for_net_locked()
1617 cache = resolv_cache_create(); in resolv_create_cache_for_net_locked()
1618 if (!cache) { in resolv_create_cache_for_net_locked()
1622 cache_info->cache = cache; in resolv_create_cache_for_net_locked()
1644 cache_flush_locked(cache_info->cache); in resolv_delete_cache_for_net()
1645 free(cache_info->cache->entries); in resolv_delete_cache_for_net()
1646 free(cache_info->cache); in resolv_delete_cache_for_net()
1680 if (info != NULL) return info->cache; in find_named_cache_locked()