FD.io VPP  v16.09
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

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:459
uword( hash_key_sum_function_t)(struct hash_header *, uword key)
Definition: hash.h:48

Definition at line 647 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:451
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 459 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 626 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:459
uword( hash_key_sum_function_t)(struct hash_header *, uword key)
Definition: hash.h:48

Definition at line 641 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:459
uword( hash_key_sum_function_t)(struct hash_header *, uword key)
Definition: hash.h:48

Definition at line 659 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:459
uword( hash_key_sum_function_t)(struct hash_header *, uword key)
Definition: hash.h:48

Definition at line 653 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:459
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 633 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:338

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

Definition at line 426 of file hash.h.

#define hash_foreach_pair (   p,
  v,
  body 
)

Definition at line 338 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:485
#define hash_mix32_step_2(a, b, c)
Definition: hash.h:486
#define hash_mix32_step_3(a, b, c)
Definition: hash.h:487

Definition at line 504 of file hash.h.

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

Definition at line 485 of file hash.h.

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

Definition at line 486 of file hash.h.

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

Definition at line 487 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:489
#define hash_mix64_step_2(a, b, c)
Definition: hash.h:490
#define hash_mix64_step_4(a, b, c)
Definition: hash.h:492
#define hash_mix64_step_3(a, b, c)
Definition: hash.h:491

Definition at line 496 of file hash.h.

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

Definition at line 489 of file hash.h.

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

Definition at line 490 of file hash.h.

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

Definition at line 491 of file hash.h.

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

Definition at line 492 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 478 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)); \
})
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:514

Definition at line 529 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:514

Definition at line 560 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:514

Definition at line 566 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:514

Definition at line 572 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 594 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 601 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:594
#define hash_v3_finalize_step_2_u32x(a, b, c)
Definition: hash.h:601
svmdb_client_t * c

Definition at line 615 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:514

Definition at line 519 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:514

Definition at line 542 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:514

Definition at line 548 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:514

Definition at line 554 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 580 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 587 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:587
#define hash_v3_mix_step_1_u32x(a, b, c)
Definition: hash.h:580
svmdb_client_t * c

Definition at line 609 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 514 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 451 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 670 of file hash.h.

unformat_function_t unformat_hash_vec_string

Definition at line 669 of file hash.h.