35 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_LIB 95 m0_htable_bob_check(htable) &&
113 m0_htable_bob_init(htable);
246 m0_htable_bob_fini(htable);
299 #undef M0_TRACE_SUBSYSTEM
#define M0_ALLOC_ARR(arr, nr)
static bool hbucket_invariant(const struct m0_ht_descr *desc, const struct m0_hbucket *bucket, const struct m0_htable *htable)
#define m0_hbucket_forall_ol(descr, var, bucket,...)
M0_INTERNAL void m0_mutex_unlock(struct m0_mutex *mutex)
M0_INTERNAL void * m0_htable_lookup(const struct m0_htable *htable, const void *key)
static bool htable_invariant(const struct m0_htable *htable)
M0_INTERNAL void m0_htable_cc_del(struct m0_htable *htable, void *amb)
static struct foo amb[NR]
M0_INTERNAL void m0_tlist_add(const struct m0_tl_descr *d, struct m0_tl *list, void *obj)
M0_INTERNAL bool m0_htable_is_init(const struct m0_htable *htable)
M0_INTERNAL void m0_tlist_init(const struct m0_tl_descr *d, struct m0_tl *list)
M0_INTERNAL void m0_tlist_fini(const struct m0_tl_descr *d, struct m0_tl *list)
M0_INTERNAL void m0_mutex_lock(struct m0_mutex *mutex)
M0_BOB_DEFINE(static, &htable_bobtype, m0_htable)
M0_INTERNAL bool m0_tlist_is_empty(const struct m0_tl_descr *d, const struct m0_tl *list)
M0_INTERNAL void m0_hbucket_unlock(struct m0_htable *htable, const void *key)
M0_INTERNAL void m0_tlist_del(const struct m0_tl_descr *d, void *obj)
M0_INTERNAL void m0_hbucket_lock(struct m0_htable *htable, const void *key)
return M0_ERR(-EOPNOTSUPP)
struct m0_hbucket * h_buckets
static const struct m0_bob_type htable_bobtype
M0_INTERNAL int m0_htable_init(const struct m0_ht_descr *d, struct m0_htable *htable, uint64_t bucket_nr)
M0_INTERNAL void * m0_htable_cc_lookup(struct m0_htable *htable, const void *key)
static void * obj_key(const struct m0_ht_descr *hd, void *obj)
M0_INTERNAL void m0_mutex_init(struct m0_mutex *mutex)
M0_INTERNAL size_t m0_tlist_length(const struct m0_tl_descr *d, const struct m0_tl *list)
bool(* hd_key_eq)(const void *key1, const void *key2)
M0_INTERNAL void m0_htable_cc_add(struct m0_htable *htable, void *amb)
const struct m0_ht_descr * h_descr
static void hbucket_init(const struct m0_ht_descr *d, struct m0_hbucket *bucket)
M0_INTERNAL bool m0_tlink_is_in(const struct m0_tl_descr *d, const void *obj)
#define m0_forall(var, nr,...)
M0_INTERNAL void m0_htable_add(struct m0_htable *htable, void *amb)
M0_INTERNAL void m0_htable_fini(struct m0_htable *htable)
static void hbucket_fini(const struct m0_ht_descr *d, struct m0_hbucket *bucket)
M0_INTERNAL void m0_mutex_fini(struct m0_mutex *mutex)
M0_INTERNAL void m0_htable_del(struct m0_htable *htable, void *amb)
M0_INTERNAL bool m0_htable_is_empty(const struct m0_htable *htable)
#define m0_tlist_for(descr, head, obj)
static int scan(struct scanner *s)
const struct m0_tl_descr * hd_tldescr
M0_INTERNAL uint64_t m0_htable_size(const struct m0_htable *htable)
uint64_t(* hd_hash_func)(const struct m0_htable *htable, const void *key)
#define offsetof(typ, memb)
M0_INTERNAL uint64_t m0_hash(uint64_t x)