FD.io VPP  v16.06
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)
 
#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

always_inline uword hash_header_bytes (void *v)
 
always_inline hash_thash_header (void *v)
 
always_inline uword hash_elts (void *v)
 
always_inline uword hash_capacity (void *v)
 
always_inline uword hash_is_user (void *v, uword i)
 
always_inline void hash_set_pair_format (void *v, format_function_t *format_pair, void *format_pair_arg)
 
always_inline void hash_set_flags (void *v, uword flags)
 
always_inline uword indirect_pair_get_log2_bytes (hash_pair_indirect_t *p)
 
always_inline uword indirect_pair_get_len (hash_pair_indirect_t *p)
 
always_inline void indirect_pair_set (hash_pair_indirect_t *p, uword log2_alloc, uword len)
 
voidhash_resize (void *old, uword new_size)
 
voidhash_dup (void *old)
 
uword hash_bytes (void *v)
 
clib_error_thash_validate (void *v)
 
always_inline uword hash_value_bytes (hash_t *h)
 
always_inline uword hash_pair_log2_bytes (hash_t *h)
 
always_inline uword hash_pair_bytes (hash_t *h)
 
always_inline voidhash_forward1 (hash_t *h, void *v)
 
always_inline voidhash_forward (hash_t *h, void *v, uword n)
 
hash_pair_thash_next (void *v, hash_next_t *hn)
 
always_inline void hash_set_value_bytes (hash_t *h, uword value_bytes)
 
always_inline 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:51
#define hash_create2(_elts, _user, _value_bytes,_key_sum, _key_equal,_format_pair, _format_pair_arg)
Definition: hash.h:429
uword( hash_key_sum_function_t)(struct hash_header *, uword key)
Definition: hash.h:49

Definition at line 615 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); \
})
always_inline void hash_set_value_bytes(hash_t *h, uword value_bytes)
Definition: hash.h:422
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:49
struct hash_header hash_t

Definition at line 429 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 594 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:51
#define hash_create2(_elts, _user, _value_bytes,_key_sum, _key_equal,_format_pair, _format_pair_arg)
Definition: hash.h:429
uword( hash_key_sum_function_t)(struct hash_header *, uword key)
Definition: hash.h:49

Definition at line 609 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:51
#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:429
uword( hash_key_sum_function_t)(struct hash_header *, uword key)
Definition: hash.h:49

Definition at line 627 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:51
#define hash_create2(_elts, _user, _value_bytes,_key_sum, _key_equal,_format_pair, _format_pair_arg)
Definition: hash.h:429
uword( hash_key_sum_function_t)(struct hash_header *, uword key)
Definition: hash.h:49

Definition at line 621 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:763
#define hash_create2(_elts, _user, _value_bytes,_key_sum, _key_equal,_format_pair, _format_pair_arg)
Definition: hash.h:429
u8 * vec_key_format_pair(u8 *s, va_list *args)
Definition: hash.c:772
uword vec_key_sum(hash_t *h, uword key)
Definition: hash.c:757

Definition at line 601 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)
#define hash_foreach_pair(p, v, body)
Definition: hash.h:311

Definition at line 380 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:134
#define hash_foreach_pair(p, v, body)
Definition: hash.h:311

Definition at line 399 of file hash.h.

#define hash_foreach_pair (   p,
  v,
  body 
)

Definition at line 311 of file hash.h.

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

Definition at line 269 of file hash.h.

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

Definition at line 231 of file hash.h.

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

Definition at line 251 of file hash.h.

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

Definition at line 234 of file hash.h.

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

Definition at line 254 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:455
#define hash_mix32_step_2(a, b, c)
Definition: hash.h:456
#define hash_mix32_step_3(a, b, c)
Definition: hash.h:457

Definition at line 474 of file hash.h.

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

Definition at line 455 of file hash.h.

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

Definition at line 456 of file hash.h.

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

Definition at line 457 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:459
#define hash_mix64_step_2(a, b, c)
Definition: hash.h:460
#define hash_mix64_step_4(a, b, c)
Definition: hash.h:462
#define hash_mix64_step_3(a, b, c)
Definition: hash.h:461

Definition at line 466 of file hash.h.

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

Definition at line 459 of file hash.h.

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

Definition at line 460 of file hash.h.

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

Definition at line 461 of file hash.h.

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

Definition at line 462 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:393

Definition at line 448 of file hash.h.

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

Definition at line 237 of file hash.h.

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

Definition at line 240 of file hash.h.

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

Definition at line 260 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)); \
})
u64 uword
Definition: types.h:112

Definition at line 224 of file hash.h.

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

Definition at line 257 of file hash.h.

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

Definition at line 243 of file hash.h.

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

Definition at line 246 of file hash.h.

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

Definition at line 263 of file hash.h.

#define hash_v3_finalize32 (   a,
  b,
 
)
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:393
always_inline uword hash32_rotate_left(u32 x, u32 i)
Definition: hash.h:484

Definition at line 497 of file hash.h.

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

Definition at line 528 of file hash.h.

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

Definition at line 534 of file hash.h.

#define hash_v3_finalize32_step3 (   a,
  b,
 
)
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:393
always_inline uword hash32_rotate_left(u32 x, u32 i)
Definition: hash.h:484

Definition at line 540 of file hash.h.

#define hash_v3_finalize_step_1_u32x (   a,
  b,
 
)
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:393

Definition at line 562 of file hash.h.

#define hash_v3_finalize_step_2_u32x (   a,
  b,
 
)
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:393

Definition at line 569 of file hash.h.

#define hash_v3_finalize_u32x (   a,
  b,
 
)
Value:
do { \
} while (0)
a
Definition: bitmap.h:393
#define hash_v3_finalize_step_1_u32x(a, b, c)
Definition: hash.h:562
#define hash_v3_finalize_step_2_u32x(a, b, c)
Definition: hash.h:569

Definition at line 583 of file hash.h.

#define hash_v3_mix32 (   a,
  b,
 
)
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:393
always_inline uword hash32_rotate_left(u32 x, u32 i)
Definition: hash.h:484

Definition at line 487 of file hash.h.

#define hash_v3_mix32_step1 (   a,
  b,
 
)
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:393
always_inline uword hash32_rotate_left(u32 x, u32 i)
Definition: hash.h:484

Definition at line 510 of file hash.h.

#define hash_v3_mix32_step2 (   a,
  b,
 
)
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:393
always_inline uword hash32_rotate_left(u32 x, u32 i)
Definition: hash.h:484

Definition at line 516 of file hash.h.

#define hash_v3_mix32_step3 (   a,
  b,
 
)
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:393
always_inline uword hash32_rotate_left(u32 x, u32 i)
Definition: hash.h:484

Definition at line 522 of file hash.h.

#define hash_v3_mix_step_1_u32x (   a,
  b,
 
)
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:393

Definition at line 548 of file hash.h.

#define hash_v3_mix_step_2_u32x (   a,
  b,
 
)
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:393

Definition at line 555 of file hash.h.

#define hash_v3_mix_u32x (   a,
  b,
 
)
Value:
do { \
} while (0)
a
Definition: bitmap.h:393
#define hash_v3_mix_step_2_u32x(a, b, c)
Definition: hash.h:555
#define hash_v3_mix_step_1_u32x(a, b, c)
Definition: hash.h:548

Definition at line 577 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 174 of file hash.h.

#define PAIR_BITS   (BITS (uword) - LOG2_ALLOC_BITS)

Definition at line 175 of file hash.h.

Typedef Documentation

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

Definition at line 51 of file hash.h.

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

Definition at line 49 of file hash.h.

typedef struct hash_header hash_t

Function Documentation

u8* format_hash ( u8 s,
va_list *  va 
)

Definition at line 900 of file hash.c.

+ Here is the call graph for this function:

always_inline uword hash32_rotate_left ( u32  x,
u32  i 
)

Definition at line 484 of file hash.h.

uword hash_bytes ( void v)

Definition at line 876 of file hash.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

always_inline uword hash_capacity ( void v)

Definition at line 118 of file hash.h.

+ Here is the caller graph for this function:

void* hash_dup ( void old)

Definition at line 734 of file hash.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

always_inline uword hash_elts ( void v)

Definition at line 111 of file hash.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

always_inline void* hash_forward ( hash_t h,
void v,
uword  n 
)

Definition at line 302 of file hash.h.

+ Here is the caller graph for this function:

always_inline void* hash_forward1 ( hash_t h,
void v 
)

Definition at line 298 of file hash.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Definition at line 107 of file hash.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

always_inline uword hash_header_bytes ( void v)

Definition at line 99 of file hash.h.

+ Here is the caller graph for this function:

always_inline uword hash_is_user ( void v,
uword  i 
)

Definition at line 122 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 208 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 569 of file hash.c.

+ Here is the call graph for this function:

always_inline uword hash_pair_bytes ( hash_t h)

Definition at line 294 of file hash.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

always_inline uword hash_pair_log2_bytes ( hash_t h)

Definition at line 281 of file hash.h.

+ Here is the caller graph for this function:

void* hash_resize ( void old,
uword  new_size 
)

Definition at line 731 of file hash.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

always_inline void hash_set_flags ( void v,
uword  flags 
)

Definition at line 142 of file hash.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

always_inline void hash_set_pair_format ( void v,
format_function_t format_pair,
void format_pair_arg 
)

Definition at line 132 of file hash.h.

+ Here is the call graph for this function:

always_inline void hash_set_value_bytes ( hash_t h,
uword  value_bytes 
)

Definition at line 422 of file hash.h.

+ Here is the call graph for this function:

clib_error_t* hash_validate ( void v)

Definition at line 990 of file hash.c.

+ Here is the call graph for this function:

always_inline uword hash_value_bytes ( hash_t h)

Definition at line 274 of file hash.h.

+ Here is the caller graph for this function:

always_inline uword indirect_pair_get_len ( hash_pair_indirect_t p)

Definition at line 183 of file hash.h.

+ Here is the caller graph for this function:

always_inline uword indirect_pair_get_log2_bytes ( hash_pair_indirect_t p)

Definition at line 178 of file hash.h.

+ Here is the caller graph for this function:

always_inline void indirect_pair_set ( hash_pair_indirect_t p,
uword  log2_alloc,
uword  len 
)

Definition at line 193 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 827 of file hash.c.

uword mem_key_sum ( hash_t h,
uword  key 
)

Definition at line 821 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 840 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 847 of file hash.c.

+ Here is the call graph for this function:

uword string_key_sum ( hash_t h,
uword  key 
)

Definition at line 834 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 763 of file hash.c.

u8* vec_key_format_pair ( u8 s,
va_list *  args 
)

Definition at line 772 of file hash.c.

+ Here is the call graph for this function:

uword vec_key_sum ( hash_t h,
uword  key 
)

Definition at line 757 of file hash.c.

+ Here is the call graph for this function:

Variable Documentation

unformat_function_t unformat_hash_string

Definition at line 638 of file hash.h.

unformat_function_t unformat_hash_vec_string

Definition at line 637 of file hash.h.