FD.io VPP  v17.10-9-gd594711
Vector Packet Processing
hash.h File Reference
+ Include dependency graph for hash.h:

Go to the source code of this file.

Data Structures

struct  hash_header
 
struct  hash_pair_t
 
struct  hash_pair_indirect_t
 
union  hash_pair_union_t
 
struct  hash_next_t
 

Macros

#define HASH_FLAG_NO_AUTO_GROW   (1 << 0)
 
#define HASH_FLAG_NO_AUTO_SHRINK   (1 << 1)
 
#define HASH_FLAG_HASH_NEXT_IN_PROGRESS   (1 << 2)
 
#define KEY_FUNC_NONE   (0) /*< sum = key */
 
#define KEY_FUNC_POINTER_UWORD   (1) /*< sum = *(uword *) key */
 
#define KEY_FUNC_POINTER_U32   (2) /*< sum = *(u32 *) key */
 
#define KEY_FUNC_STRING   (3) /*< sum = string_key_sum, etc. */
 
#define LOG2_ALLOC_BITS   (5)
 
#define PAIR_BITS   (BITS (uword) - LOG2_ALLOC_BITS)
 
#define hash_set3(h, key, value, old_value)
 
#define hash_get(h, key)   _hash_get ((h), (uword) (key))
 
#define hash_get_pair(h, key)   _hash_get_pair ((h), (uword) (key))
 
#define hash_set(h, key, value)   hash_set3(h,key,value,0)
 
#define hash_set1(h, key)   (h) = _hash_set3(h,(uword) (key),0,0)
 
#define hash_unset(h, key)   ((h) = _hash_unset ((h), (uword) (key),0))
 
#define hash_unset3(h, key, old_value)   ((h) = _hash_unset ((h), (uword) (key), (void *) (old_value)))
 
#define hash_get_mem(h, key)   _hash_get ((h), pointer_to_uword (key))
 
#define hash_get_pair_mem(h, key)   _hash_get_pair ((h), pointer_to_uword (key))
 
#define hash_set_mem(h, key, value)   hash_set3 (h, pointer_to_uword (key), (value), 0)
 
#define hash_set1_mem(h, key)   hash_set3 ((h), pointer_to_uword (key), 0, 0)
 
#define hash_unset_mem(h, key)   ((h) = _hash_unset ((h), pointer_to_uword (key),0))
 
#define hash_free(h)   (h) = _hash_free ((h))
 
#define hash_foreach_pair(p, v, body)
 Iterate over hash pairs. More...
 
#define hash_foreach(key_var, value_var, h, body)
 
#define hash_foreach_mem(key_var, value_var, h, body)
 
#define hash_create2(_elts, _user, _value_bytes, _key_sum, _key_equal, _format_pair, _format_pair_arg)
 
#define hash_mix_step(a, b, c, s0, s1, s2)
 
#define hash_mix32_step_1(a, b, c)   hash_mix_step(a,b,c,13,8,13)
 
#define hash_mix32_step_2(a, b, c)   hash_mix_step(a,b,c,12,16,5)
 
#define hash_mix32_step_3(a, b, c)   hash_mix_step(a,b,c,3,10,15)
 
#define hash_mix64_step_1(a, b, c)   hash_mix_step(a,b,c,43,9,8)
 
#define hash_mix64_step_2(a, b, c)   hash_mix_step(a,b,c,38,23,5)
 
#define hash_mix64_step_3(a, b, c)   hash_mix_step(a,b,c,35,49,11)
 
#define hash_mix64_step_4(a, b, c)   hash_mix_step(a,b,c,12,18,22)
 
#define hash_mix64(a0, b0, c0)
 
#define hash_mix32(a0, b0, c0)
 
#define hash_v3_mix32(a, b, c)
 
#define hash_v3_finalize32(a, b, c)
 
#define hash_v3_mix32_step1(a, b, c)
 
#define hash_v3_mix32_step2(a, b, c)
 
#define hash_v3_mix32_step3(a, b, c)
 
#define hash_v3_finalize32_step1(a, b, c)
 
#define hash_v3_finalize32_step2(a, b, c)
 
#define hash_v3_finalize32_step3(a, b, c)
 
#define hash_v3_mix_step_1_u32x(a, b, c)
 
#define hash_v3_mix_step_2_u32x(a, b, c)
 
#define hash_v3_finalize_step_1_u32x(a, b, c)
 
#define hash_v3_finalize_step_2_u32x(a, b, c)
 
#define hash_v3_mix_u32x(a, b, c)
 
#define hash_v3_finalize_u32x(a, b, c)
 
#define hash_create_mem(elts, key_bytes, value_bytes)   hash_create2((elts),(key_bytes),(value_bytes),mem_key_sum,mem_key_equal,0,0)
 
#define hash_create_vec(elts, key_bytes, value_bytes)
 
#define hash_create_string(elts, value_bytes)
 
#define hash_create(elts, value_bytes)
 
#define hash_create_uword(elts, value_bytes)
 
#define hash_create_u32(elts, value_bytes)
 

Typedefs

typedef uwordhash_key_sum_function_t) (struct hash_header *, uword key)
 
typedef uwordhash_key_equal_function_t) (struct hash_header *, uword key1, uword key2)
 
typedef struct hash_header hash_t
 

Functions

static uword hash_header_bytes (void *v)
 
static hash_thash_header (void *v)
 
static uword hash_elts (void *v)
 
static uword hash_capacity (void *v)
 
static uword hash_is_user (void *v, uword i)
 
static void hash_set_pair_format (void *v, format_function_t *format_pair, void *format_pair_arg)
 
static void hash_set_flags (void *v, uword flags)
 
static uword indirect_pair_get_log2_bytes (hash_pair_indirect_t *p)
 
static uword indirect_pair_get_len (hash_pair_indirect_t *p)
 
static void indirect_pair_set (hash_pair_indirect_t *p, uword log2_alloc, uword len)
 
void * hash_resize (void *old, uword new_size)
 
void * hash_dup (void *old)
 
uword hash_bytes (void *v)
 
clib_error_thash_validate (void *v)
 
static uword hash_value_bytes (hash_t *h)
 
static uword hash_pair_log2_bytes (hash_t *h)
 
static uword hash_pair_bytes (hash_t *h)
 
static void * hash_forward1 (hash_t *h, void *v)
 
static void * hash_forward (hash_t *h, void *v, uword n)
 
hash_pair_thash_next (void *v, hash_next_t *hn)
 
static void hash_set_value_bytes (hash_t *h, uword value_bytes)
 
static uword hash32_rotate_left (u32 x, u32 i)
 
uword hash_memory (void *p, word n_bytes, uword state)
 
uword mem_key_sum (hash_t *h, uword key)
 
uword mem_key_equal (hash_t *h, uword key1, uword key2)
 
uword vec_key_sum (hash_t *h, uword key)
 
uword vec_key_equal (hash_t *h, uword key1, uword key2)
 
u8vec_key_format_pair (u8 *s, va_list *args)
 
uword string_key_sum (hash_t *h, uword key)
 
uword string_key_equal (hash_t *h, uword key1, uword key2)
 
u8string_key_format_pair (u8 *s, va_list *args)
 
u8format_hash (u8 *s, va_list *va)
 
int test_hash_main (unformat_input_t *input)
 

Variables

unformat_function_t unformat_hash_vec_string
 
unformat_function_t unformat_hash_string
 

Macro Definition Documentation

#define hash_create (   elts,
  value_bytes 
)
Value:
hash_create2((elts),0,(value_bytes), \
0,0)
#define KEY_FUNC_NONE
Definition: hash.h:76
uword( hash_key_equal_function_t)(struct hash_header *, uword key1, uword key2)
Definition: hash.h:50
#define hash_create2(_elts, _user, _value_bytes,_key_sum, _key_equal,_format_pair, _format_pair_arg)
Definition: hash.h:470
uword( hash_key_sum_function_t)(struct hash_header *, uword key)
Definition: hash.h:48

Definition at line 658 of file hash.h.

#define hash_create2 (   _elts,
  _user,
  _value_bytes,
  _key_sum,
  _key_equal,
  _format_pair,
  _format_pair_arg 
)
Value:
({ \
hash_t _h; \
memset (&_h, 0, sizeof (_h)); \
_h.user = (_user); \
_h.key_sum = (hash_key_sum_function_t *) (_key_sum); \
_h.key_equal = (_key_equal); \
hash_set_value_bytes (&_h, (_value_bytes)); \
_h.format_pair = (format_function_t *) (_format_pair); \
_h.format_pair_arg = (_format_pair_arg); \
_hash_create ((_elts), &_h); \
})
static void hash_set_value_bytes(hash_t *h, uword value_bytes)
Definition: hash.h:462
u8 *( format_function_t)(u8 *s, va_list *args)
Definition: format.h:48
uword( hash_key_sum_function_t)(struct hash_header *, uword key)
Definition: hash.h:48
struct hash_header hash_t

Definition at line 470 of file hash.h.

#define hash_create_mem (   elts,
  key_bytes,
  value_bytes 
)    hash_create2((elts),(key_bytes),(value_bytes),mem_key_sum,mem_key_equal,0,0)

Definition at line 637 of file hash.h.

#define hash_create_string (   elts,
  value_bytes 
)
Value:
hash_create2((elts),0,(value_bytes), \
0, 0)
#define KEY_FUNC_STRING
Definition: hash.h:79
uword( hash_key_equal_function_t)(struct hash_header *, uword key1, uword key2)
Definition: hash.h:50
#define hash_create2(_elts, _user, _value_bytes,_key_sum, _key_equal,_format_pair, _format_pair_arg)
Definition: hash.h:470
uword( hash_key_sum_function_t)(struct hash_header *, uword key)
Definition: hash.h:48

Definition at line 652 of file hash.h.

#define hash_create_u32 (   elts,
  value_bytes 
)
Value:
hash_create2((elts),0,(value_bytes), \
0,0)
uword( hash_key_equal_function_t)(struct hash_header *, uword key1, uword key2)
Definition: hash.h:50
#define KEY_FUNC_POINTER_U32
Definition: hash.h:78
#define hash_create2(_elts, _user, _value_bytes,_key_sum, _key_equal,_format_pair, _format_pair_arg)
Definition: hash.h:470
uword( hash_key_sum_function_t)(struct hash_header *, uword key)
Definition: hash.h:48

Definition at line 670 of file hash.h.

#define hash_create_uword (   elts,
  value_bytes 
)
Value:
hash_create2((elts),0,(value_bytes), \
0,0)
#define KEY_FUNC_POINTER_UWORD
Definition: hash.h:77
uword( hash_key_equal_function_t)(struct hash_header *, uword key1, uword key2)
Definition: hash.h:50
#define hash_create2(_elts, _user, _value_bytes,_key_sum, _key_equal,_format_pair, _format_pair_arg)
Definition: hash.h:470
uword( hash_key_sum_function_t)(struct hash_header *, uword key)
Definition: hash.h:48

Definition at line 664 of file hash.h.

#define hash_create_vec (   elts,
  key_bytes,
  value_bytes 
)
Value:
hash_create2((elts),(key_bytes),(value_bytes),\
uword vec_key_equal(hash_t *h, uword key1, uword key2)
Definition: hash.c:799
#define hash_create2(_elts, _user, _value_bytes,_key_sum, _key_equal,_format_pair, _format_pair_arg)
Definition: hash.h:470
u8 * vec_key_format_pair(u8 *s, va_list *args)
Definition: hash.c:809
uword vec_key_sum(hash_t *h, uword key)
Definition: hash.c:792

Definition at line 644 of file hash.h.

#define HASH_FLAG_HASH_NEXT_IN_PROGRESS   (1 << 2)

Definition at line 66 of file hash.h.

#define HASH_FLAG_NO_AUTO_GROW   (1 << 0)

Definition at line 62 of file hash.h.

#define HASH_FLAG_NO_AUTO_SHRINK   (1 << 1)

Definition at line 64 of file hash.h.

#define hash_foreach (   key_var,
  value_var,
  h,
  body 
)
Value:
do { \
hash_pair_t * _r; \
hash_foreach_pair (_r, (h), { \
(key_var) = (__typeof__ (key_var)) _r->key; \
(value_var) = (__typeof__ (value_var)) _r->value[0]; \
do { body; } while (0); \
}); \
} while (0)
vec_header_t h
Definition: buffer.c:282
#define hash_foreach_pair(p, v, body)
Iterate over hash pairs.
Definition: hash.h:349

Definition at line 418 of file hash.h.

#define hash_foreach_mem (   key_var,
  value_var,
  h,
  body 
)
Value:
do { \
hash_pair_t * _r; \
hash_foreach_pair (_r, (h), { \
(key_var) = (__typeof__ (key_var)) uword_to_pointer (_r->key, void *); \
(value_var) = (__typeof__ (value_var)) _r->value[0]; \
do { body; } while (0); \
}); \
} while (0)
#define uword_to_pointer(u, type)
Definition: types.h:136
vec_header_t h
Definition: buffer.c:282
#define hash_foreach_pair(p, v, body)
Iterate over hash pairs.
Definition: hash.h:349

Definition at line 437 of file hash.h.

#define hash_foreach_pair (   p,
  v,
  body 
)

Iterate over hash pairs.

Parameters
pThe current (key,value) pair. This should be of type (hash_pair_t *).
vThe hash table to iterate.
bodyThe operation to perform on each (key,value) pair.

Executes the expression or code block body with each active hash pair.

Definition at line 349 of file hash.h.

#define hash_free (   h)    (h) = _hash_free ((h))

Definition at line 286 of file hash.h.

#define hash_get (   h,
  key 
)    _hash_get ((h), (uword) (key))

Definition at line 248 of file hash.h.

#define hash_get_mem (   h,
  key 
)    _hash_get ((h), pointer_to_uword (key))

Definition at line 268 of file hash.h.

#define hash_get_pair (   h,
  key 
)    _hash_get_pair ((h), (uword) (key))

Definition at line 251 of file hash.h.

#define hash_get_pair_mem (   h,
  key 
)    _hash_get_pair ((h), pointer_to_uword (key))

Definition at line 271 of file hash.h.

#define hash_mix32 (   a0,
  b0,
  c0 
)
Value:
do { \
hash_mix32_step_1 (a0, b0, c0); \
hash_mix32_step_2 (a0, b0, c0); \
hash_mix32_step_3 (a0, b0, c0); \
} while (0) \
#define hash_mix32_step_1(a, b, c)
Definition: hash.h:496
#define hash_mix32_step_2(a, b, c)
Definition: hash.h:497
#define hash_mix32_step_3(a, b, c)
Definition: hash.h:498

Definition at line 515 of file hash.h.

#define hash_mix32_step_1 (   a,
  b,
  c 
)    hash_mix_step(a,b,c,13,8,13)

Definition at line 496 of file hash.h.

#define hash_mix32_step_2 (   a,
  b,
  c 
)    hash_mix_step(a,b,c,12,16,5)

Definition at line 497 of file hash.h.

#define hash_mix32_step_3 (   a,
  b,
  c 
)    hash_mix_step(a,b,c,3,10,15)

Definition at line 498 of file hash.h.

#define hash_mix64 (   a0,
  b0,
  c0 
)
Value:
do { \
hash_mix64_step_1 (a0, b0, c0); \
hash_mix64_step_2 (a0, b0, c0); \
hash_mix64_step_3 (a0, b0, c0); \
hash_mix64_step_4 (a0, b0, c0); \
} while (0) \
#define hash_mix64_step_1(a, b, c)
Definition: hash.h:500
#define hash_mix64_step_2(a, b, c)
Definition: hash.h:501
#define hash_mix64_step_4(a, b, c)
Definition: hash.h:503
#define hash_mix64_step_3(a, b, c)
Definition: hash.h:502

Definition at line 507 of file hash.h.

#define hash_mix64_step_1 (   a,
  b,
  c 
)    hash_mix_step(a,b,c,43,9,8)

Definition at line 500 of file hash.h.

#define hash_mix64_step_2 (   a,
  b,
  c 
)    hash_mix_step(a,b,c,38,23,5)

Definition at line 501 of file hash.h.

#define hash_mix64_step_3 (   a,
  b,
  c 
)    hash_mix_step(a,b,c,35,49,11)

Definition at line 502 of file hash.h.

#define hash_mix64_step_4 (   a,
  b,
  c 
)    hash_mix_step(a,b,c,12,18,22)

Definition at line 503 of file hash.h.

#define hash_mix_step (   a,
  b,
  c,
  s0,
  s1,
  s2 
)
Value:
do { \
(a) -= (b) + (c); (a) ^= (c) >> (s0); \
(b) -= (c) + (a); (b) ^= (a) << (s1); \
(c) -= (a) + (b); (c) ^= (b) >> (s2); \
} while (0)
a
Definition: bitmap.h:516
svmdb_client_t * c

Definition at line 489 of file hash.h.

#define hash_set (   h,
  key,
  value 
)    hash_set3(h,key,value,0)

Definition at line 254 of file hash.h.

#define hash_set1 (   h,
  key 
)    (h) = _hash_set3(h,(uword) (key),0,0)

Definition at line 257 of file hash.h.

#define hash_set1_mem (   h,
  key 
)    hash_set3 ((h), pointer_to_uword (key), 0, 0)

Definition at line 277 of file hash.h.

#define hash_set3 (   h,
  key,
  value,
  old_value 
)
Value:
({ \
uword _v = (uword) (value); \
(h) = _hash_set3 ((h), (uword) (key), (void *) &_v, (old_value)); \
})
vec_header_t h
Definition: buffer.c:282
u64 uword
Definition: types.h:112

Definition at line 241 of file hash.h.

#define hash_set_mem (   h,
  key,
  value 
)    hash_set3 (h, pointer_to_uword (key), (value), 0)

Definition at line 274 of file hash.h.

#define hash_unset (   h,
  key 
)    ((h) = _hash_unset ((h), (uword) (key),0))

Definition at line 260 of file hash.h.

#define hash_unset3 (   h,
  key,
  old_value 
)    ((h) = _hash_unset ((h), (uword) (key), (void *) (old_value)))

Definition at line 263 of file hash.h.

#define hash_unset_mem (   h,
  key 
)    ((h) = _hash_unset ((h), pointer_to_uword (key),0))

Definition at line 280 of file hash.h.

#define hash_v3_finalize32 (   a,
  b,
  c 
)
Value:
do { \
(c) ^= (b); (c) -= hash32_rotate_left ((b), 14); \
(a) ^= (c); (a) -= hash32_rotate_left ((c), 11); \
(b) ^= (a); (b) -= hash32_rotate_left ((a), 25); \
(c) ^= (b); (c) -= hash32_rotate_left ((b), 16); \
(a) ^= (c); (a) -= hash32_rotate_left ((c), 4); \
(b) ^= (a); (b) -= hash32_rotate_left ((a), 14); \
(c) ^= (b); (c) -= hash32_rotate_left ((b), 24); \
} while (0)
a
Definition: bitmap.h:516
svmdb_client_t * c
static uword hash32_rotate_left(u32 x, u32 i)
Definition: hash.h:525

Definition at line 540 of file hash.h.

#define hash_v3_finalize32_step1 (   a,
  b,
  c 
)
Value:
do { \
(c) ^= (b); (c) -= hash32_rotate_left ((b), 14); \
(a) ^= (c); (a) -= hash32_rotate_left ((c), 11); \
} while (0)
a
Definition: bitmap.h:516
svmdb_client_t * c
static uword hash32_rotate_left(u32 x, u32 i)
Definition: hash.h:525

Definition at line 571 of file hash.h.

#define hash_v3_finalize32_step2 (   a,
  b,
  c 
)
Value:
do { \
(b) ^= (a); (b) -= hash32_rotate_left ((a), 25); \
(c) ^= (b); (c) -= hash32_rotate_left ((b), 16); \
} while (0)
a
Definition: bitmap.h:516
svmdb_client_t * c
static uword hash32_rotate_left(u32 x, u32 i)
Definition: hash.h:525

Definition at line 577 of file hash.h.

#define hash_v3_finalize32_step3 (   a,
  b,
  c 
)
Value:
do { \
(a) ^= (c); (a) -= hash32_rotate_left ((c), 4); \
(b) ^= (a); (b) -= hash32_rotate_left ((a), 14); \
(c) ^= (b); (c) -= hash32_rotate_left ((b), 24); \
} while (0)
a
Definition: bitmap.h:516
svmdb_client_t * c
static uword hash32_rotate_left(u32 x, u32 i)
Definition: hash.h:525

Definition at line 583 of file hash.h.

#define hash_v3_finalize_step_1_u32x (   a,
  b,
  c 
)
Value:
do { \
(c) ^= (b); (c) -= u32x_irotate_left ((b), 14); \
(a) ^= (c); (a) -= u32x_irotate_left ((c), 11); \
(b) ^= (a); (b) -= u32x_irotate_left ((a), 25); \
} while (0)
a
Definition: bitmap.h:516
svmdb_client_t * c

Definition at line 605 of file hash.h.

#define hash_v3_finalize_step_2_u32x (   a,
  b,
  c 
)
Value:
do { \
(c) ^= (b); (c) -= u32x_irotate_left ((b), 16); \
(a) ^= (c); (a) -= u32x_irotate_left ((c), 4); \
(b) ^= (a); (b) -= u32x_irotate_left ((a), 14); \
(c) ^= (b); (c) -= u32x_irotate_left ((b), 24); \
} while (0)
a
Definition: bitmap.h:516
svmdb_client_t * c

Definition at line 612 of file hash.h.

#define hash_v3_finalize_u32x (   a,
  b,
  c 
)
Value:
do { \
} while (0)
a
Definition: bitmap.h:516
#define hash_v3_finalize_step_1_u32x(a, b, c)
Definition: hash.h:605
#define hash_v3_finalize_step_2_u32x(a, b, c)
Definition: hash.h:612
svmdb_client_t * c

Definition at line 626 of file hash.h.

#define hash_v3_mix32 (   a,
  b,
  c 
)
Value:
do { \
(a) -= (c); (a) ^= hash32_rotate_left ((c), 4); (c) += (b); \
(b) -= (a); (b) ^= hash32_rotate_left ((a), 6); (a) += (c); \
(c) -= (b); (c) ^= hash32_rotate_left ((b), 8); (b) += (a); \
(a) -= (c); (a) ^= hash32_rotate_left ((c),16); (c) += (b); \
(b) -= (a); (b) ^= hash32_rotate_left ((a),19); (a) += (c); \
(c) -= (b); (c) ^= hash32_rotate_left ((b), 4); (b) += (a); \
} while (0)
a
Definition: bitmap.h:516
svmdb_client_t * c
static uword hash32_rotate_left(u32 x, u32 i)
Definition: hash.h:525

Definition at line 530 of file hash.h.

#define hash_v3_mix32_step1 (   a,
  b,
  c 
)
Value:
do { \
(a) -= (c); (a) ^= hash32_rotate_left ((c), 4); (c) += (b); \
(b) -= (a); (b) ^= hash32_rotate_left ((a), 6); (a) += (c); \
} while (0)
a
Definition: bitmap.h:516
svmdb_client_t * c
static uword hash32_rotate_left(u32 x, u32 i)
Definition: hash.h:525

Definition at line 553 of file hash.h.

#define hash_v3_mix32_step2 (   a,
  b,
  c 
)
Value:
do { \
(c) -= (b); (c) ^= hash32_rotate_left ((b), 8); (b) += (a); \
(a) -= (c); (a) ^= hash32_rotate_left ((c),16); (c) += (b); \
} while (0)
a
Definition: bitmap.h:516
svmdb_client_t * c
static uword hash32_rotate_left(u32 x, u32 i)
Definition: hash.h:525

Definition at line 559 of file hash.h.

#define hash_v3_mix32_step3 (   a,
  b,
  c 
)
Value:
do { \
(b) -= (a); (b) ^= hash32_rotate_left ((a),19); (a) += (c); \
(c) -= (b); (c) ^= hash32_rotate_left ((b), 4); (b) += (a); \
} while (0)
a
Definition: bitmap.h:516
svmdb_client_t * c
static uword hash32_rotate_left(u32 x, u32 i)
Definition: hash.h:525

Definition at line 565 of file hash.h.

#define hash_v3_mix_step_1_u32x (   a,
  b,
  c 
)
Value:
do { \
(a) -= (c); (a) ^= u32x_irotate_left ((c), 4); (c) += (b); \
(b) -= (a); (b) ^= u32x_irotate_left ((a), 6); (a) += (c); \
(c) -= (b); (c) ^= u32x_irotate_left ((b), 8); (b) += (a); \
} while (0)
a
Definition: bitmap.h:516
svmdb_client_t * c

Definition at line 591 of file hash.h.

#define hash_v3_mix_step_2_u32x (   a,
  b,
  c 
)
Value:
do { \
(a) -= (c); (a) ^= u32x_irotate_left ((c),16); (c) += (b); \
(b) -= (a); (b) ^= u32x_irotate_left ((a),19); (a) += (c); \
(c) -= (b); (c) ^= u32x_irotate_left ((b), 4); (b) += (a); \
} while (0)
a
Definition: bitmap.h:516
svmdb_client_t * c

Definition at line 598 of file hash.h.

#define hash_v3_mix_u32x (   a,
  b,
  c 
)
Value:
do { \
} while (0)
a
Definition: bitmap.h:516
#define hash_v3_mix_step_2_u32x(a, b, c)
Definition: hash.h:598
#define hash_v3_mix_step_1_u32x(a, b, c)
Definition: hash.h:591
svmdb_client_t * c

Definition at line 620 of file hash.h.

#define KEY_FUNC_NONE   (0) /*< sum = key */

Definition at line 76 of file hash.h.

#define KEY_FUNC_POINTER_U32   (2) /*< sum = *(u32 *) key */

Definition at line 78 of file hash.h.

#define KEY_FUNC_POINTER_UWORD   (1) /*< sum = *(uword *) key */

Definition at line 77 of file hash.h.

#define KEY_FUNC_STRING   (3) /*< sum = string_key_sum, etc. */

Definition at line 79 of file hash.h.

#define LOG2_ALLOC_BITS   (5)

Definition at line 190 of file hash.h.

#define PAIR_BITS   (BITS (uword) - LOG2_ALLOC_BITS)

Definition at line 191 of file hash.h.

Typedef Documentation

typedef uword( hash_key_equal_function_t) (struct hash_header *, uword key1, uword key2)

Definition at line 50 of file hash.h.

typedef uword( hash_key_sum_function_t) (struct hash_header *, uword key)

Definition at line 48 of file hash.h.

typedef struct hash_header hash_t

Function Documentation

u8* format_hash ( u8 s,
va_list *  va 
)

Definition at line 950 of file hash.c.

+ Here is the call graph for this function:

static uword hash32_rotate_left ( u32  x,
u32  i 
)
inlinestatic

Definition at line 525 of file hash.h.

uword hash_bytes ( void *  v)

Definition at line 925 of file hash.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword hash_capacity ( void *  v)
inlinestatic

Definition at line 125 of file hash.h.

+ Here is the caller graph for this function:

void* hash_dup ( void *  old)

Definition at line 765 of file hash.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword hash_elts ( void *  v)
inlinestatic

Definition at line 117 of file hash.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void* hash_forward ( hash_t h,
void *  v,
uword  n 
)
inlinestatic

Definition at line 327 of file hash.h.

+ Here is the caller graph for this function:

static void* hash_forward1 ( hash_t h,
void *  v 
)
inlinestatic

Definition at line 320 of file hash.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static hash_t* hash_header ( void *  v)
inlinestatic

Definition at line 110 of file hash.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword hash_header_bytes ( void *  v)
inlinestatic

Definition at line 100 of file hash.h.

+ Here is the caller graph for this function:

static uword hash_is_user ( void *  v,
uword  i 
)
inlinestatic

Definition at line 132 of file hash.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uword hash_memory ( void *  p,
word  n_bytes,
uword  state 
)

Definition at line 214 of file hash.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

hash_pair_t* hash_next ( void *  v,
hash_next_t hn 
)

Definition at line 588 of file hash.c.

+ Here is the call graph for this function:

static uword hash_pair_bytes ( hash_t h)
inlinestatic

Definition at line 313 of file hash.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword hash_pair_log2_bytes ( hash_t h)
inlinestatic

Definition at line 300 of file hash.h.

+ Here is the caller graph for this function:

void* hash_resize ( void *  old,
uword  new_size 
)

Definition at line 759 of file hash.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void hash_set_flags ( void *  v,
uword  flags 
)
inlinestatic

Definition at line 152 of file hash.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void hash_set_pair_format ( void *  v,
format_function_t format_pair,
void *  format_pair_arg 
)
inlinestatic

Definition at line 142 of file hash.h.

+ Here is the call graph for this function:

static void hash_set_value_bytes ( hash_t h,
uword  value_bytes 
)
inlinestatic

Definition at line 462 of file hash.h.

+ Here is the call graph for this function:

clib_error_t* hash_validate ( void *  v)

Definition at line 1045 of file hash.c.

+ Here is the call graph for this function:

static uword hash_value_bytes ( hash_t h)
inlinestatic

Definition at line 292 of file hash.h.

+ Here is the caller graph for this function:

static uword indirect_pair_get_len ( hash_pair_indirect_t p)
inlinestatic

Definition at line 202 of file hash.h.

+ Here is the caller graph for this function:

static uword indirect_pair_get_log2_bytes ( hash_pair_indirect_t p)
inlinestatic

Definition at line 195 of file hash.h.

+ Here is the caller graph for this function:

static void indirect_pair_set ( hash_pair_indirect_t p,
uword  log2_alloc,
uword  len 
)
inlinestatic

Definition at line 212 of file hash.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uword mem_key_equal ( hash_t h,
uword  key1,
uword  key2 
)

Definition at line 867 of file hash.c.

uword mem_key_sum ( hash_t h,
uword  key 
)

Definition at line 860 of file hash.c.

+ Here is the call graph for this function:

uword string_key_equal ( hash_t h,
uword  key1,
uword  key2 
)

Definition at line 882 of file hash.c.

+ Here is the caller graph for this function:

u8* string_key_format_pair ( u8 s,
va_list *  args 
)

Definition at line 890 of file hash.c.

+ Here is the call graph for this function:

uword string_key_sum ( hash_t h,
uword  key 
)

Definition at line 875 of file hash.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int test_hash_main ( unformat_input_t input)
uword vec_key_equal ( hash_t h,
uword  key1,
uword  key2 
)

Definition at line 799 of file hash.c.

u8* vec_key_format_pair ( u8 s,
va_list *  args 
)

Definition at line 809 of file hash.c.

+ Here is the call graph for this function:

uword vec_key_sum ( hash_t h,
uword  key 
)

Definition at line 792 of file hash.c.

+ Here is the call graph for this function:

Variable Documentation

unformat_function_t unformat_hash_string

Definition at line 681 of file hash.h.

unformat_function_t unformat_hash_vec_string

Definition at line 680 of file hash.h.