Lines Matching refs:hs

109 _ck_hs_next(struct ck_hs *hs, struct ck_hs_map *map,  in _ck_hs_next()  argument
121 if (hs->mode & CK_HS_MODE_OBJECT) in _ck_hs_next()
124 (void)hs; /* Avoid unused parameter warning. */ in _ck_hs_next()
146 ck_hs_next(struct ck_hs *hs, struct ck_hs_iterator *i, void **key) in ck_hs_next() argument
149 return _ck_hs_next(hs, hs->map, i, key); in ck_hs_next()
153 ck_hs_next_spmc(struct ck_hs *hs, struct ck_hs_iterator *i, void **key) in ck_hs_next_spmc() argument
158 m = i->map = ck_pr_load_ptr(&hs->map); in ck_hs_next_spmc()
161 return _ck_hs_next(hs, m, i, key); in ck_hs_next_spmc()
165 ck_hs_stat(struct ck_hs *hs, struct ck_hs_stat *st) in ck_hs_stat() argument
167 struct ck_hs_map *map = hs->map; in ck_hs_stat()
176 ck_hs_count(struct ck_hs *hs) in ck_hs_count() argument
179 return hs->map->n_entries; in ck_hs_count()
191 ck_hs_destroy(struct ck_hs *hs) in ck_hs_destroy() argument
194 ck_hs_map_destroy(hs->m, hs->map, false); in ck_hs_destroy()
199 ck_hs_map_create(struct ck_hs *hs, unsigned long entries) in ck_hs_map_create() argument
210 if (hs->mode & CK_HS_MODE_DELETE) { in ck_hs_map_create()
217 map = hs->m->malloc(size); in ck_hs_map_create()
242 if (hs->mode & CK_HS_MODE_DELETE) { in ck_hs_map_create()
255 ck_hs_reset_size(struct ck_hs *hs, unsigned long capacity) in ck_hs_reset_size() argument
259 previous = hs->map; in ck_hs_reset_size()
260 map = ck_hs_map_create(hs, capacity); in ck_hs_reset_size()
264 ck_pr_store_ptr(&hs->map, map); in ck_hs_reset_size()
265 ck_hs_map_destroy(hs->m, previous, true); in ck_hs_reset_size()
270 ck_hs_reset(struct ck_hs *hs) in ck_hs_reset() argument
274 previous = hs->map; in ck_hs_reset()
275 return ck_hs_reset_size(hs, previous->capacity); in ck_hs_reset()
333 ck_hs_grow(struct ck_hs *hs, in ck_hs_grow() argument
341 map = hs->map; in ck_hs_grow()
345 update = ck_hs_map_create(hs, capacity); in ck_hs_grow()
357 if (hs->mode & CK_HS_MODE_OBJECT) in ck_hs_grow()
361 h = hs->hf(previous, hs->seed); in ck_hs_grow()
393 ck_hs_map_destroy(hs->m, update, false); in ck_hs_grow()
400 ck_pr_store_ptr(&hs->map, update); in ck_hs_grow()
401 ck_hs_map_destroy(hs->m, map, true); in ck_hs_grow()
406 ck_hs_map_postinsert(struct ck_hs *hs, struct ck_hs_map *map) in ck_hs_map_postinsert() argument
411 ck_hs_grow(hs, map->capacity << 1); in ck_hs_map_postinsert()
417 ck_hs_rebuild(struct ck_hs *hs) in ck_hs_rebuild() argument
420 return ck_hs_grow(hs, hs->map->capacity); in ck_hs_rebuild()
424 ck_hs_map_probe(struct ck_hs *hs, in ck_hs_map_probe() argument
442 if (hs->mode & CK_HS_MODE_OBJECT) { in ck_hs_map_probe()
498 if (hs->mode & CK_HS_MODE_OBJECT) { in ck_hs_map_probe()
509 if (hs->compare == NULL) in ck_hs_map_probe()
512 if (hs->compare(k, key) == true) in ck_hs_map_probe()
556 ck_hs_gc(struct ck_hs *hs, unsigned long cycles, unsigned long seed) in ck_hs_gc() argument
560 struct ck_hs_map *map = hs->map; in ck_hs_gc()
577 bounds = hs->m->malloc(size); in ck_hs_gc()
596 if (hs->mode & CK_HS_MODE_OBJECT) in ck_hs_gc()
600 h = hs->hf(entry, hs->seed); in ck_hs_gc()
603 slot = ck_hs_map_probe(hs, map, &n_probes, &first, h, entry, &object, in ck_hs_gc()
607 const void *insert = ck_hs_marshal(hs->mode, entry, h); in ck_hs_gc()
638 hs->m->free(bounds, size, false); in ck_hs_gc()
645 ck_hs_fas(struct ck_hs *hs, in ck_hs_fas() argument
651 struct ck_hs_map *map = hs->map; in ck_hs_fas()
655 slot = ck_hs_map_probe(hs, map, &n_probes, &first, h, key, &object, in ck_hs_fas()
662 insert = ck_hs_marshal(hs->mode, key, h); in ck_hs_fas()
689 ck_hs_apply(struct ck_hs *hs, in ck_hs_apply() argument
700 map = hs->map; in ck_hs_apply()
702 …slot = ck_hs_map_probe(hs, map, &n_probes, &first, h, key, &object, map->probe_limit, CK_HS_PROBE_… in ck_hs_apply()
704 if (ck_hs_grow(hs, map->capacity << 1) == false) in ck_hs_apply()
733 insert = ck_hs_marshal(hs->mode, delta, h); in ck_hs_apply()
754 ck_hs_map_postinsert(hs, map); in ck_hs_apply()
760 ck_hs_set(struct ck_hs *hs, in ck_hs_set() argument
772 map = hs->map; in ck_hs_set()
774 …slot = ck_hs_map_probe(hs, map, &n_probes, &first, h, key, &object, map->probe_limit, CK_HS_PROBE_… in ck_hs_set()
776 if (ck_hs_grow(hs, map->capacity << 1) == false) in ck_hs_set()
783 insert = ck_hs_marshal(hs->mode, key, h); in ck_hs_set()
809 ck_hs_map_postinsert(hs, map); in ck_hs_set()
816 ck_hs_put_internal(struct ck_hs *hs, in ck_hs_put_internal() argument
826 map = hs->map; in ck_hs_put_internal()
828 slot = ck_hs_map_probe(hs, map, &n_probes, &first, h, key, &object, in ck_hs_put_internal()
832 if (ck_hs_grow(hs, map->capacity << 1) == false) in ck_hs_put_internal()
843 insert = ck_hs_marshal(hs->mode, key, h); in ck_hs_put_internal()
853 ck_hs_map_postinsert(hs, map); in ck_hs_put_internal()
858 ck_hs_put(struct ck_hs *hs, in ck_hs_put() argument
863 return ck_hs_put_internal(hs, h, key, CK_HS_PROBE_INSERT); in ck_hs_put()
867 ck_hs_put_unique(struct ck_hs *hs, in ck_hs_put_unique() argument
872 return ck_hs_put_internal(hs, h, key, CK_HS_PROBE_TOMBSTONE); in ck_hs_put_unique()
876 ck_hs_get(struct ck_hs *hs, in ck_hs_get() argument
887 map = ck_pr_load_ptr(&hs->map); in ck_hs_get()
893 ck_hs_map_probe(hs, map, &n_probes, &first, h, key, &object, probe, CK_HS_PROBE); in ck_hs_get()
903 ck_hs_remove(struct ck_hs *hs, in ck_hs_remove() argument
908 struct ck_hs_map *map = hs->map; in ck_hs_remove()
911 slot = ck_hs_map_probe(hs, map, &n_probes, &first, h, key, &object, in ck_hs_remove()
923 ck_hs_move(struct ck_hs *hs, in ck_hs_move() argument
933 hs->mode = source->mode; in ck_hs_move()
934 hs->seed = source->seed; in ck_hs_move()
935 hs->map = source->map; in ck_hs_move()
936 hs->m = m; in ck_hs_move()
937 hs->hf = hf; in ck_hs_move()
938 hs->compare = compare; in ck_hs_move()
943 ck_hs_init(struct ck_hs *hs, in ck_hs_init() argument
955 hs->m = m; in ck_hs_init()
956 hs->mode = mode; in ck_hs_init()
957 hs->seed = seed; in ck_hs_init()
958 hs->hf = hf; in ck_hs_init()
959 hs->compare = compare; in ck_hs_init()
961 hs->map = ck_hs_map_create(hs, n_entries); in ck_hs_init()
962 return hs->map != NULL; in ck_hs_init()