Rizin
unix-like reverse engineering framework and cli tools
ckh.h
Go to the documentation of this file.
1 /******************************************************************************/
2 #ifdef JEMALLOC_H_TYPES
3 
4 typedef struct ckh_s ckh_t;
5 typedef struct ckhc_s ckhc_t;
6 
7 /* Typedefs to allow easy function pointer passing. */
8 typedef void ckh_hash_t (const void *, size_t[2]);
9 typedef bool ckh_keycomp_t (const void *, const void *);
10 
11 /* Maintain counters used to get an idea of performance. */
12 /* #define CKH_COUNT */
13 /* Print counter values in ckh_delete() (requires CKH_COUNT). */
14 /* #define CKH_VERBOSE */
15 
16 /*
17  * There are 2^LG_CKH_BUCKET_CELLS cells in each hash table bucket. Try to fit
18  * one bucket per L1 cache line.
19  */
20 #define LG_CKH_BUCKET_CELLS (LG_CACHELINE - LG_SIZEOF_PTR - 1)
21 
22 #endif /* JEMALLOC_H_TYPES */
23 /******************************************************************************/
24 #ifdef JEMALLOC_H_STRUCTS
25 
26 /* Hash table cell. */
27 struct ckhc_s {
28  const void *key;
29  const void *data;
30 };
31 
32 struct ckh_s {
33 #ifdef CKH_COUNT
34  /* Counters used to get an idea of performance. */
35  uint64_t ngrows;
36  uint64_t nshrinks;
37  uint64_t nshrinkfails;
38  uint64_t ninserts;
39  uint64_t nrelocs;
40 #endif
41 
42  /* Used for pseudo-random number generation. */
43  uint64_t prng_state;
44 
45  /* Total number of items. */
46  size_t count;
47 
48  /*
49  * Minimum and current number of hash table buckets. There are
50  * 2^LG_CKH_BUCKET_CELLS cells per bucket.
51  */
52  unsigned lg_minbuckets;
53  unsigned lg_curbuckets;
54 
55  /* Hash and comparison functions. */
56  ckh_hash_t *hash;
57  ckh_keycomp_t *keycomp;
58 
59  /* Hash table with 2^lg_curbuckets buckets. */
60  ckhc_t *tab;
61 };
62 
63 #endif /* JEMALLOC_H_STRUCTS */
64 /******************************************************************************/
65 #ifdef JEMALLOC_H_EXTERNS
66 
67 bool ckh_new(tsd_t *tsd, ckh_t *ckh, size_t minitems, ckh_hash_t *hash,
68  ckh_keycomp_t *keycomp);
69 void ckh_delete(tsd_t *tsd, ckh_t *ckh);
70 size_t ckh_count(ckh_t *ckh);
71 bool ckh_iter(ckh_t *ckh, size_t *tabind, void **key, void **data);
72 bool ckh_insert(tsd_t *tsd, ckh_t *ckh, const void *key, const void *data);
73 bool ckh_remove(tsd_t *tsd, ckh_t *ckh, const void *searchkey, void **key,
74  void **data);
75 bool ckh_search(ckh_t *ckh, const void *searchkey, void **key, void **data);
76 void ckh_string_hash(const void *key, size_t rz_hash[2]);
77 bool ckh_string_keycomp(const void *k1, const void *k2);
78 void ckh_pointer_hash(const void *key, size_t rz_hash[2]);
79 bool ckh_pointer_keycomp(const void *k1, const void *k2);
80 
81 #endif /* JEMALLOC_H_EXTERNS */
82 /******************************************************************************/
83 #ifdef JEMALLOC_H_INLINES
84 
85 #endif /* JEMALLOC_H_INLINES */
86 /******************************************************************************/
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void count
Definition: sflib.h:98
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void static offset struct stat static buf void long static basep static whence static length const void static len key
Definition: sflib.h:118
#define ckh_remove
#define ckh_pointer_hash
#define ckh_count
#define ckh_insert
#define ckh_string_hash
#define ckh_pointer_keycomp
#define ckh_search
#define ckh_iter
#define ckh_new
#define ckh_string_keycomp
#define ckh_delete
unsigned long uint64_t
Definition: sftypes.h:28
Definition: enough.c:118