예제 #1
0
파일: lease.c 프로젝트: russross/envoy
void lease_state_init(void) {
    lease_by_root_pathname = hash_create(
            LEASE_HASHTABLE_SIZE,
            (Hashfunc) string_hash,
            (Cmpfunc) strcmp);
    dir_cache = lru_new(
            LEASE_DIR_CACHE_SIZE,
            (Hashfunc) dir_block_hash,
            (Cmpfunc) dir_block_cmp,
            NULL,
            (void (*)(void *)) lease_cleanup_dir_block);
}
예제 #2
0
파일: object.c 프로젝트: russross/envoy
void object_state_init(void) {
    object_reserve_next = ~ (u64) 0;
    object_reserve_remaining = 0;
    object_reserve_wait = NULL;
    if (objectroot == NULL) {
        object_cache_status = NULL;
    } else {
        object_cache_status = lru_new(
                OBJECT_CACHE_STATE_SIZE,
                (Hashfunc) u64_hash,
                (Cmpfunc) u64_cmp,
                NULL,
                NULL);
    }
}
예제 #3
0
END_TEST

START_TEST(test_eviction_order) {
  lru_t *lru = lru_new(10, 8);

  fail_unless(lru != NULL);

  /* fill up lru and check */
  FETCH(0, "aaaaaaaaaa", !CACHED);
  FETCH(1, "bbbbbbbbbb", !CACHED);
  FETCH(2, "cccccccccc", !CACHED);
  FETCH(3, "dddddddddd", !CACHED);
  FETCH(4, "eeeeeeeeee", !CACHED);
  FETCH(5, "ffffffffff", !CACHED);
  FETCH(6, "gggggggggg", !CACHED);
  FETCH(7, "hhhhhhhhhh", !CACHED);

  /* another entry evicts 0 */
  FETCH(8, "iiiiiiiiii", !CACHED);
  FETCH(1, "bbbbbbbbbb", CACHED);
  FETCH(2, "cccccccccc", CACHED);
  FETCH(3, "dddddddddd", CACHED);
  FETCH(4, "eeeeeeeeee", CACHED);
  FETCH(5, "ffffffffff", CACHED);
  FETCH(6, "gggggggggg", CACHED);
  FETCH(7, "hhhhhhhhhh", CACHED);
  FETCH(8, "iiiiiiiiii", CACHED);
  FETCH(0, "aaaaaaaaaa", !CACHED);

  /* refetching does not evict */
  FETCH(5, "ffffffffff", CACHED);
  FETCH(5, "ffffffffff", CACHED);
  FETCH(5, "ffffffffff", CACHED);
  FETCH(5, "ffffffffff", CACHED);
  FETCH(5, "ffffffffff", CACHED);
  FETCH(5, "ffffffffff", CACHED);
  FETCH(5, "ffffffffff", CACHED);
  FETCH(5, "ffffffffff", CACHED);
  FETCH(5, "ffffffffff", CACHED);
  FETCH(5, "ffffffffff", CACHED);
  FETCH(5, "ffffffffff", CACHED);

  /* and doing that didn't change 2 from being LRU  */
  FETCH(2, "cccccccccc", CACHED);

  /* but 1 was evicted */
  FETCH(1, "bbbbbbbbbb", !CACHED);
}