Lines Matching refs:hs
102 typedef long ck_rhs_probe_cb_t(struct ck_rhs *hs,
252 ck_rhs_set_load_factor(struct ck_rhs *hs, unsigned int load_factor) in ck_rhs_set_load_factor() argument
254 struct ck_rhs_map *map = hs->map; in ck_rhs_set_load_factor()
259 hs->load_factor = load_factor; in ck_rhs_set_load_factor()
260 map->max_entries = (map->capacity * (unsigned long)hs->load_factor) / 100; in ck_rhs_set_load_factor()
262 if (ck_rhs_grow(hs, map->capacity << 1) == false) in ck_rhs_set_load_factor()
264 map = hs->map; in ck_rhs_set_load_factor()
279 ck_rhs_next(struct ck_rhs *hs, struct ck_rhs_iterator *i, void **key) in ck_rhs_next() argument
281 struct ck_rhs_map *map = hs->map; in ck_rhs_next()
291 if (hs->mode & CK_RHS_MODE_OBJECT) in ck_rhs_next()
304 ck_rhs_stat(struct ck_rhs *hs, struct ck_rhs_stat *st) in ck_rhs_stat() argument
306 struct ck_rhs_map *map = hs->map; in ck_rhs_stat()
314 ck_rhs_count(struct ck_rhs *hs) in ck_rhs_count() argument
317 return hs->map->n_entries; in ck_rhs_count()
329 ck_rhs_destroy(struct ck_rhs *hs) in ck_rhs_destroy() argument
332 ck_rhs_map_destroy(hs->m, hs->map, false); in ck_rhs_destroy()
337 ck_rhs_map_create(struct ck_rhs *hs, unsigned long entries) in ck_rhs_map_create() argument
346 if (hs->mode & CK_RHS_MODE_READ_MOSTLY) in ck_rhs_map_create()
355 map = hs->m->malloc(size); in ck_rhs_map_create()
358 map->read_mostly = !!(hs->mode & CK_RHS_MODE_READ_MOSTLY); in ck_rhs_map_create()
373 map->max_entries = (map->capacity * (unsigned long)hs->load_factor) / 100; in ck_rhs_map_create()
401 ck_rhs_reset_size(struct ck_rhs *hs, unsigned long capacity) in ck_rhs_reset_size() argument
405 previous = hs->map; in ck_rhs_reset_size()
406 map = ck_rhs_map_create(hs, capacity); in ck_rhs_reset_size()
410 ck_pr_store_ptr(&hs->map, map); in ck_rhs_reset_size()
411 ck_rhs_map_destroy(hs->m, previous, true); in ck_rhs_reset_size()
416 ck_rhs_reset(struct ck_rhs *hs) in ck_rhs_reset() argument
420 previous = hs->map; in ck_rhs_reset()
421 return ck_rhs_reset_size(hs, previous->capacity); in ck_rhs_reset()
494 ck_rhs_grow(struct ck_rhs *hs, in ck_rhs_grow() argument
502 map = hs->map; in ck_rhs_grow()
506 update = ck_rhs_map_create(hs, capacity); in ck_rhs_grow()
518 if (hs->mode & CK_RHS_MODE_OBJECT) in ck_rhs_grow()
522 h = hs->hf(previous, hs->seed); in ck_rhs_grow()
533 ck_rhs_map_destroy(hs->m, update, false); in ck_rhs_grow()
549 if (hs->mode & CK_RHS_MODE_OBJECT) in ck_rhs_grow()
554 h = hs->hf(previous, hs->seed); in ck_rhs_grow()
567 ck_pr_store_ptr(&hs->map, update); in ck_rhs_grow()
568 ck_rhs_map_destroy(hs->m, map, true); in ck_rhs_grow()
573 ck_rhs_rebuild(struct ck_rhs *hs) in ck_rhs_rebuild() argument
576 return ck_rhs_grow(hs, hs->map->capacity); in ck_rhs_rebuild()
580 ck_rhs_map_probe_rm(struct ck_rhs *hs, in ck_rhs_map_probe_rm() argument
599 if (hs->mode & CK_RHS_MODE_OBJECT) { in ck_rhs_map_probe_rm()
654 if (hs->mode & CK_RHS_MODE_OBJECT) { in ck_rhs_map_probe_rm()
667 if (hs->compare == NULL) { in ck_rhs_map_probe_rm()
672 if (hs->compare(k, key) == true) in ck_rhs_map_probe_rm()
692 ck_rhs_map_probe(struct ck_rhs *hs, in ck_rhs_map_probe() argument
711 if (hs->mode & CK_RHS_MODE_OBJECT) { in ck_rhs_map_probe()
768 if (hs->mode & CK_RHS_MODE_OBJECT) { in ck_rhs_map_probe()
781 if (hs->compare == NULL) { in ck_rhs_map_probe()
786 if (hs->compare(k, key) == true) in ck_rhs_map_probe()
827 ck_rhs_gc(struct ck_rhs *hs) in ck_rhs_gc() argument
830 struct ck_rhs_map *map = hs->map; in ck_rhs_gc()
842 ck_rhs_add_wanted(struct ck_rhs *hs, long end_offset, long old_slot, in ck_rhs_add_wanted() argument
845 struct ck_rhs_map *map = hs->map; in ck_rhs_add_wanted()
869 ck_rhs_remove_wanted(struct ck_rhs *hs, long offset, long limit) in ck_rhs_remove_wanted() argument
871 struct ck_rhs_map *map = hs->map; in ck_rhs_remove_wanted()
906 ck_rhs_put_robin_hood(struct ck_rhs *hs, in ck_rhs_put_robin_hood() argument
920 map = hs->map; in ck_rhs_put_robin_hood()
927 if (hs->mode & CK_RHS_MODE_OBJECT) in ck_rhs_put_robin_hood()
933 slot = map->probe_func(hs, map, &n_probes, &first, h, key, &object, in ck_rhs_put_robin_hood()
938 if (ck_rhs_grow(hs, map->capacity << 1) == false) { in ck_rhs_put_robin_hood()
970 ck_rhs_add_wanted(hs, slot, orig_slot, h); in ck_rhs_put_robin_hood()
978 ck_rhs_add_wanted(hs, orig_slot, prev, h); in ck_rhs_put_robin_hood()
989 ck_rhs_do_backward_shift_delete(struct ck_rhs *hs, long slot) in ck_rhs_do_backward_shift_delete() argument
991 struct ck_rhs_map *map = hs->map; in ck_rhs_do_backward_shift_delete()
996 h = ck_rhs_remove_wanted(hs, slot, -1); in ck_rhs_do_backward_shift_delete()
1024 h = ck_rhs_remove_wanted(hs, offset, slot); in ck_rhs_do_backward_shift_delete()
1069 ck_rhs_fas(struct ck_rhs *hs, in ck_rhs_fas() argument
1078 struct ck_rhs_map *map = hs->map; in ck_rhs_fas()
1083 slot = map->probe_func(hs, map, &n_probes, &first, h, key, &object, in ck_rhs_fas()
1090 insert = ck_rhs_marshal(hs->mode, key, h); in ck_rhs_fas()
1098 ret = ck_rhs_put_robin_hood(hs, first, desc2); in ck_rhs_fas()
1108 ck_rhs_add_wanted(hs, first, -1, h); in ck_rhs_fas()
1109 ck_rhs_do_backward_shift_delete(hs, slot); in ck_rhs_fas()
1131 ck_rhs_apply(struct ck_rhs *hs, in ck_rhs_apply() argument
1145 map = hs->map; in ck_rhs_apply()
1147 …slot = map->probe_func(hs, map, &n_probes, &first, h, key, &object, map->probe_limit, CK_RHS_PROBE… in ck_rhs_apply()
1149 if (ck_rhs_grow(hs, map->capacity << 1) == false) in ck_rhs_apply()
1168 ck_rhs_do_backward_shift_delete(hs, slot); in ck_rhs_apply()
1179 insert = ck_rhs_marshal(hs->mode, delta, h); in ck_rhs_apply()
1191 int ret = ck_rhs_put_robin_hood(hs, first, desc2); in ck_rhs_apply()
1209 ck_rhs_add_wanted(hs, first, -1, h); in ck_rhs_apply()
1213 ck_rhs_do_backward_shift_delete(hs, slot); in ck_rhs_apply()
1223 ck_rhs_add_wanted(hs, slot, -1, h); in ck_rhs_apply()
1229 ck_rhs_grow(hs, map->capacity << 1); in ck_rhs_apply()
1235 ck_rhs_set(struct ck_rhs *hs, in ck_rhs_set() argument
1249 map = hs->map; in ck_rhs_set()
1251 …slot = map->probe_func(hs, map, &n_probes, &first, h, key, &object, map->probe_limit, CK_RHS_PROBE… in ck_rhs_set()
1253 if (ck_rhs_grow(hs, map->capacity << 1) == false) in ck_rhs_set()
1259 insert = ck_rhs_marshal(hs->mode, key, h); in ck_rhs_set()
1268 int ret = ck_rhs_put_robin_hood(hs, first, desc2); in ck_rhs_set()
1286 ck_rhs_add_wanted(hs, first, -1, h); in ck_rhs_set()
1290 ck_rhs_do_backward_shift_delete(hs, slot); in ck_rhs_set()
1301 ck_rhs_add_wanted(hs, slot, -1, h); in ck_rhs_set()
1307 ck_rhs_grow(hs, map->capacity << 1); in ck_rhs_set()
1315 ck_rhs_put_internal(struct ck_rhs *hs, in ck_rhs_put_internal() argument
1327 map = hs->map; in ck_rhs_put_internal()
1329 slot = map->probe_func(hs, map, &n_probes, &first, h, key, &object, in ck_rhs_put_internal()
1333 if (ck_rhs_grow(hs, map->capacity << 1) == false) in ck_rhs_put_internal()
1344 insert = ck_rhs_marshal(hs->mode, key, h); in ck_rhs_put_internal()
1348 int ret = ck_rhs_put_robin_hood(hs, first, desc); in ck_rhs_put_internal()
1350 return ck_rhs_put_internal(hs, h, key, behavior); in ck_rhs_put_internal()
1356 ck_rhs_add_wanted(hs, first, -1, h); in ck_rhs_put_internal()
1361 ck_rhs_add_wanted(hs, slot, -1, h); in ck_rhs_put_internal()
1366 ck_rhs_grow(hs, map->capacity << 1); in ck_rhs_put_internal()
1371 ck_rhs_put(struct ck_rhs *hs, in ck_rhs_put() argument
1376 return ck_rhs_put_internal(hs, h, key, CK_RHS_PROBE_INSERT); in ck_rhs_put()
1380 ck_rhs_put_unique(struct ck_rhs *hs, in ck_rhs_put_unique() argument
1385 return ck_rhs_put_internal(hs, h, key, CK_RHS_PROBE_RH); in ck_rhs_put_unique()
1389 ck_rhs_get(struct ck_rhs *hs, in ck_rhs_get() argument
1401 map = ck_pr_load_ptr(&hs->map); in ck_rhs_get()
1408 map->probe_func(hs, map, &n_probes, &first, h, key, &object, probe, CK_RHS_PROBE_NO_RH); in ck_rhs_get()
1418 ck_rhs_remove(struct ck_rhs *hs, in ck_rhs_remove() argument
1424 struct ck_rhs_map *map = hs->map; in ck_rhs_remove()
1427 slot = map->probe_func(hs, map, &n_probes, &first, h, key, &object, in ck_rhs_remove()
1433 ck_rhs_do_backward_shift_delete(hs, slot); in ck_rhs_remove()
1438 ck_rhs_move(struct ck_rhs *hs, in ck_rhs_move() argument
1448 hs->mode = source->mode; in ck_rhs_move()
1449 hs->seed = source->seed; in ck_rhs_move()
1450 hs->map = source->map; in ck_rhs_move()
1451 hs->load_factor = source->load_factor; in ck_rhs_move()
1452 hs->m = m; in ck_rhs_move()
1453 hs->hf = hf; in ck_rhs_move()
1454 hs->compare = compare; in ck_rhs_move()
1459 ck_rhs_init(struct ck_rhs *hs, in ck_rhs_init() argument
1471 hs->m = m; in ck_rhs_init()
1472 hs->mode = mode; in ck_rhs_init()
1473 hs->seed = seed; in ck_rhs_init()
1474 hs->hf = hf; in ck_rhs_init()
1475 hs->compare = compare; in ck_rhs_init()
1476 hs->load_factor = CK_RHS_DEFAULT_LOAD_FACTOR; in ck_rhs_init()
1478 hs->map = ck_rhs_map_create(hs, n_entries); in ck_rhs_init()
1479 return hs->map != NULL; in ck_rhs_init()