Lines Matching refs:cache

190 static int memcache_validate_basedn(LDAPMemCache *cache, const char *basedn);
194 static int memcache_adj_size(LDAPMemCache *cache, unsigned long size,
196 static int memcache_free_entry(LDAPMemCache *cache, ldapmemcacheRes *pRes);
197 static int memcache_expired(LDAPMemCache *cache, ldapmemcacheRes *pRes,
199 static int memcache_add_to_list(LDAPMemCache *cache, ldapmemcacheRes *pRes,
203 static int memcache_free_from_list(LDAPMemCache *cache, ldapmemcacheRes *pRes,
214 static int memcache_access(LDAPMemCache *cache, int mode,
217 static void memcache_print_list( LDAPMemCache *cache, int index );
218 static void memcache_report_statistics( LDAPMemCache *cache );
357 ldap_memcache_set( LDAP *ld, LDAPMemCache *cache ) in ldap_memcache_set() argument
368 if (ld->ld_memcache != cache) { in ldap_memcache_set()
409 if (cache == NULL) { in ldap_memcache_set()
416 LDAP_MEMCACHE_MUTEX_LOCK( cache ); in ldap_memcache_set()
418 if ((nRes = memcache_adj_size(cache, sizeof(ldapmemcacheld), in ldap_memcache_set()
420 LDAP_MEMCACHE_MUTEX_UNLOCK( cache ); in ldap_memcache_set()
427 memcache_adj_size(cache, sizeof(ldapmemcacheld), in ldap_memcache_set()
432 pCur->ldmemcl_next = cache->ldmemc_lds; in ldap_memcache_set()
433 cache->ldmemc_lds = pCur; in ldap_memcache_set()
434 ld->ld_memcache = cache; in ldap_memcache_set()
437 LDAP_MEMCACHE_MUTEX_UNLOCK( cache ); in ldap_memcache_set()
470 ldap_memcache_update( LDAPMemCache *cache ) in ldap_memcache_update() argument
473 cache, 0, 0 ); in ldap_memcache_update()
475 if ( !NSLDAPI_VALID_MEMCACHE_POINTER( cache )) { in ldap_memcache_update()
479 LDAP_MEMCACHE_MUTEX_LOCK( cache ); in ldap_memcache_update()
480 memcache_access(cache, MEMCACHE_ACCESS_UPDATE, NULL, NULL, NULL); in ldap_memcache_update()
481 LDAP_MEMCACHE_MUTEX_UNLOCK( cache ); in ldap_memcache_update()
487 ldap_memcache_flush( LDAPMemCache *cache, char *dn, int scope ) in ldap_memcache_flush() argument
491 cache, ( dn == NULL ) ? "(null)" : dn, scope ); in ldap_memcache_flush()
493 if ( !NSLDAPI_VALID_MEMCACHE_POINTER( cache )) { in ldap_memcache_flush()
497 LDAP_MEMCACHE_MUTEX_LOCK( cache ); in ldap_memcache_flush()
500 memcache_access(cache, MEMCACHE_ACCESS_FLUSH_ALL, NULL, NULL, NULL); in ldap_memcache_flush()
502 memcache_access(cache, MEMCACHE_ACCESS_FLUSH, in ldap_memcache_flush()
506 LDAP_MEMCACHE_MUTEX_UNLOCK( cache ); in ldap_memcache_flush()
512 ldap_memcache_destroy( LDAPMemCache *cache ) in ldap_memcache_destroy() argument
519 cache, 0, 0 ); in ldap_memcache_destroy()
521 if ( !NSLDAPI_VALID_MEMCACHE_POINTER( cache )) { in ldap_memcache_destroy()
526 LDAP_MEMCACHE_MUTEX_LOCK( cache ); in ldap_memcache_destroy()
528 for (pNode = cache->ldmemc_lds; pNode; pNode = pNextNode, i++) { in ldap_memcache_destroy()
530 cache->ldmemc_lds = pNode->ldmemcl_next; in ldap_memcache_destroy()
539 LDAP_MEMCACHE_MUTEX_UNLOCK( cache ); in ldap_memcache_destroy()
542 if (cache->ldmemc_basedns) { in ldap_memcache_destroy()
543 for (i = 0; cache->ldmemc_basedns[i]; i++) { in ldap_memcache_destroy()
544 size += strlen(cache->ldmemc_basedns[i]) + 1; in ldap_memcache_destroy()
545 NSLDAPI_FREE(cache->ldmemc_basedns[i]); in ldap_memcache_destroy()
548 NSLDAPI_FREE(cache->ldmemc_basedns); in ldap_memcache_destroy()
552 if (cache->ldmemc_resTmp) { in ldap_memcache_destroy()
553 size += htable_sizeinbytes(cache->ldmemc_resTmp); in ldap_memcache_destroy()
554 memcache_access(cache, MEMCACHE_ACCESS_DELETE_ALL, NULL, NULL, NULL); in ldap_memcache_destroy()
555 htable_free(cache->ldmemc_resTmp); in ldap_memcache_destroy()
559 if (cache->ldmemc_resLookup) { in ldap_memcache_destroy()
560 size += htable_sizeinbytes(cache->ldmemc_resLookup); in ldap_memcache_destroy()
561 memcache_access(cache, MEMCACHE_ACCESS_FLUSH_ALL, NULL, NULL, NULL); in ldap_memcache_destroy()
562 htable_free(cache->ldmemc_resLookup); in ldap_memcache_destroy()
565 memcache_adj_size(cache, size, MEMCACHE_SIZE_NON_ENTRIES, in ldap_memcache_destroy()
568 LDAP_MEMCACHE_MUTEX_FREE( cache ); in ldap_memcache_destroy()
570 NSLDAPI_FREE(cache); in ldap_memcache_destroy()
857 memcache_validate_basedn(LDAPMemCache *cache, const char *basedn) in memcache_validate_basedn() argument
861 if ( cache->ldmemc_basedns == NULL ) { in memcache_validate_basedn()
872 return (cache->ldmemc_basedns && cache->ldmemc_basedns[0] ? in memcache_validate_basedn()
877 for (i = 0; cache->ldmemc_basedns[i]; i++) {
878 if (memcache_compare_dn(basedn, cache->ldmemc_basedns[i],
935 memcache_adj_size(LDAPMemCache *cache, unsigned long size,
944 cache->ldmemc_size_used += size;
945 if ((cache->ldmemc_size > 0) &&
946 (cache->ldmemc_size_used > cache->ldmemc_size)) {
948 if (size > cache->ldmemc_size_entries) {
949 cache->ldmemc_size_used -= size;
952 cache->ldmemc_size_entries, 0, 0 );
956 while (cache->ldmemc_size_used > cache->ldmemc_size) {
957 if (memcache_access(cache, MEMCACHE_ACCESS_FLUSH_LRU,
959 cache->ldmemc_size_used -= size;
968 cache->ldmemc_size_entries += size;
970 cache->ldmemc_size_used -= size;
971 assert(cache->ldmemc_size_used >= 0);
973 cache->ldmemc_size_entries -= size;
977 if ( cache->ldmemc_size == 0 ) { /* no size limit */
980 cache->ldmemc_size_used, 0, 0 );
984 "free space: %ld bytes).\n", cache->ldmemc_size_used,
985 cache->ldmemc_size - cache->ldmemc_size_used, 0 );
1276 memcache_free_entry(LDAPMemCache *cache, ldapmemcacheRes *pRes)
1294 memcache_adj_size(cache, size, MEMCACHE_SIZE_ENTRIES,
1303 memcache_free_from_list(LDAPMemCache *cache, ldapmemcacheRes *pRes, int index)
1313 if (cache->ldmemc_resHead[index] == pRes)
1314 cache->ldmemc_resHead[index] = pRes->ldmemcr_next[index];
1316 if (cache->ldmemc_resTail[index] == pRes)
1317 cache->ldmemc_resTail[index] = pRes->ldmemcr_prev[index];
1327 memcache_add_to_list(LDAPMemCache *cache, ldapmemcacheRes *pRes, int index)
1329 if (cache->ldmemc_resHead[index])
1330 cache->ldmemc_resHead[index]->ldmemcr_prev[index] = pRes;
1332 cache->ldmemc_resTail[index] = pRes;
1335 pRes->ldmemcr_next[index] = cache->ldmemc_resHead[index];
1336 cache->ldmemc_resHead[index] = pRes;
1365 memcache_print_list( LDAPMemCache *cache, int index )
1388 cache, name, 0 );
1389 for ( restmp = cache->ldmemc_resHead[index]; restmp != NULL;
1398 cache, name, 0 );
1404 memcache_expired(LDAPMemCache *cache, ldapmemcacheRes *pRes,
1407 if (!cache->ldmemc_ttl)
1413 cache->ldmemc_ttl);
1418 memcache_access(LDAPMemCache *cache, int mode,
1430 nRes = htable_get(cache->ldmemc_resTmp, pData2, (void**)&pRes);
1443 nRes = memcache_adj_size(cache, size, MEMCACHE_SIZE_ENTRIES,
1446 nRes = htable_put(cache->ldmemc_resTmp, pData2, (void*)pRes);
1448 memcache_add_to_list(cache, pRes, LIST_TMP);
1450 memcache_free_entry(cache, pRes);
1460 nRes = htable_get(cache->ldmemc_resTmp, pData1, (void**)&pRes);
1466 nRes = htable_remove(cache->ldmemc_resTmp, pData1, NULL);
1468 memcache_free_from_list(cache, pRes, LIST_TMP);
1469 memcache_free_entry(cache, pRes);
1473 nRes = memcache_adj_size(cache, size, MEMCACHE_SIZE_ENTRIES,
1477 nRes = htable_remove(cache->ldmemc_resTmp, pData1, NULL);
1479 memcache_free_from_list(cache, pRes, LIST_TMP);
1480 memcache_free_entry(cache, pRes);
1489 nRes = htable_remove(cache->ldmemc_resTmp, pData1, NULL);
1491 memcache_free_from_list(cache, pRes, LIST_TMP);
1496 if ((nRes = htable_put(cache->ldmemc_resLookup,
1499 memcache_add_to_list(cache, pRes, LIST_TTL);
1500 memcache_add_to_list(cache, pRes, LIST_LRU);
1502 memcache_free_entry(cache, pRes);
1510 nRes = htable_get(cache->ldmemc_resLookup, pData1, (void**)ppRes);
1514 if (!memcache_expired(cache, *ppRes, (unsigned long)time(0))) {
1515 memcache_free_from_list(cache, *ppRes, LIST_LRU);
1516 memcache_add_to_list(cache, *ppRes, LIST_LRU);
1520 nRes = htable_remove(cache->ldmemc_resLookup, pData1, NULL);
1522 memcache_free_from_list(cache, *ppRes, LIST_TTL);
1523 memcache_free_from_list(cache, *ppRes, LIST_LRU);
1524 memcache_free_entry(cache, *ppRes);
1533 if ((nRes = htable_remove(cache->ldmemc_resTmp, pData1,
1535 memcache_free_from_list(cache, pCurRes, LIST_TMP);
1536 memcache_free_entry(cache, pCurRes);
1542 nRes = htable_removeall(cache->ldmemc_resTmp, (void*)cache);
1547 ldapmemcacheRes *pCurRes = cache->ldmemc_resTail[LIST_TTL];
1550 for (; pCurRes; pCurRes = cache->ldmemc_resTail[LIST_TTL]) {
1552 if (!memcache_expired(cache, pCurRes, curTime))
1555 nRes = htable_remove(cache->ldmemc_resLookup,
1558 memcache_free_from_list(cache, pCurRes, LIST_TTL);
1559 memcache_free_from_list(cache, pCurRes, LIST_LRU);
1560 memcache_free_entry(cache, pCurRes);
1566 ldapmemcacheRes *pCurRes = cache->ldmemc_resHead[LIST_TTL];
1568 nRes = htable_removeall(cache->ldmemc_resLookup, (void*)cache);
1570 for (; pCurRes; pCurRes = cache->ldmemc_resHead[LIST_TTL]) {
1571 memcache_free_from_list(cache, pCurRes, LIST_LRU);
1572 cache->ldmemc_resHead[LIST_TTL] =
1573 cache->ldmemc_resHead[LIST_TTL]->ldmemcr_next[LIST_TTL];
1574 memcache_free_entry(cache, pCurRes);
1576 cache->ldmemc_resTail[LIST_TTL] = NULL;
1589 if (cache->ldmemc_basedns) {
1590 for (i = 0; cache->ldmemc_basedns[i]; i++) {
1591 if ((memcache_compare_dn(cache->ldmemc_basedns[i], dn,
1593 (memcache_compare_dn(dn, cache->ldmemc_basedns[i],
1597 if (cache->ldmemc_basedns[i] == NULL)
1605 for (pRes = cache->ldmemc_resHead[list_id]; pRes != NULL;
1632 nRes = htable_remove(cache->ldmemc_resLookup,
1635 memcache_free_from_list(cache, pRes, LIST_TTL);
1636 memcache_free_from_list(cache, pRes, LIST_LRU);
1638 nRes = htable_remove(cache->ldmemc_resTmp,
1641 memcache_free_from_list(cache, pRes, LIST_TMP);
1643 memcache_free_entry(cache, pRes);
1650 ldapmemcacheRes *pRes = cache->ldmemc_resTail[LIST_LRU];
1658 nRes = htable_remove(cache->ldmemc_resLookup,
1661 memcache_free_from_list(cache, pRes, LIST_TTL);
1662 memcache_free_from_list(cache, pRes, LIST_LRU);
1663 memcache_free_entry(cache, pRes);
1676 memcache_report_statistics( LDAPMemCache *cache )
1680 if ( cache->ldmemc_stats.ldmemcstat_tries == 0 ) {
1683 hitrate = ( 100L * cache->ldmemc_stats.ldmemcstat_hits ) /
1684 cache->ldmemc_stats.ldmemcstat_tries;
1686 LDAPDebug( LDAP_DEBUG_STATS, "memcache 0x%x:\n", cache, 0, 0 );
1688 cache->ldmemc_stats.ldmemcstat_tries,
1689 cache->ldmemc_stats.ldmemcstat_hits, hitrate );
1690 if ( cache->ldmemc_size <= 0 ) { /* no size limit */
1692 cache->ldmemc_size_used, 0, 0 );
1695 cache->ldmemc_size_used,
1696 cache->ldmemc_size - cache->ldmemc_size_used, 0 );
1989 LDAPMemCache *cache = (LDAPMemCache*)pData;
2011 memcache_free_from_list(cache, pCurRes, LIST_TMP);
2012 memcache_free_entry(cache, pCurRes);
2022 LDAPMemCache *cache = (LDAPMemCache*)pData;
2031 memcache_free_from_list(cache, pCurRes, LIST_TMP);
2032 memcache_free_entry(cache, pCurRes);