diff options
author | David Lamparter <equinox@opensourcerouting.org> | 2017-07-14 13:07:30 +0200 |
---|---|---|
committer | David Lamparter <equinox@opensourcerouting.org> | 2017-07-14 13:07:30 +0200 |
commit | 2d8270596a085e7a815cebaea21e17cba9e26111 (patch) | |
tree | f9a559f654e7d704ecacc9dadedbe01868615610 /lib/hash.c | |
parent | *: remove VTYNL, part 6 of 6 (diff) | |
parent | Merge pull request #815 from dwalton76/CMD_WARNING_take2 (diff) | |
download | frr-2d8270596a085e7a815cebaea21e17cba9e26111.tar.xz frr-2d8270596a085e7a815cebaea21e17cba9e26111.zip |
Merge remote-tracking branch 'frr/master' into newline-redux
Lots of conflicts from CMD_WARNING_CONFIG_FAILED...
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'lib/hash.c')
-rw-r--r-- | lib/hash.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/lib/hash.c b/lib/hash.c index 166bc7a26..47f336c1e 100644 --- a/lib/hash.c +++ b/lib/hash.c @@ -87,13 +87,8 @@ hash_alloc_intern (void *arg) } #define hash_update_ssq(hz, old, new) \ - do { \ - long double res; \ - res = powl(old, 2.0); \ - hz->stats.ssq -= (uint64_t) res;\ - res = powl(new, 2.0); \ - hz->stats.ssq += (uint64_t) res; \ - } while (0); \ + atomic_fetch_add_explicit(&hz->stats.ssq, (new + old)*(new - old),\ + memory_order_relaxed); /* Expand hash if the chain length exceeds the threshold. */ static void hash_expand (struct hash *hash) @@ -428,6 +423,13 @@ DEFUN(show_hash_stats, long double ssq; // ssq casted to long double pthread_mutex_lock (&_hashes_mtx); + if (!_hashes) + { + pthread_mutex_unlock (&_hashes_mtx); + vty_outln (vty, "No hash tables in use."); + return CMD_SUCCESS; + } + for (ALL_LIST_ELEMENTS_RO (_hashes, ln, h)) { if (!h->name) @@ -482,6 +484,5 @@ DEFUN(show_hash_stats, void hash_cmd_init () { - _hashes = list_new(); install_element (ENABLE_NODE, &show_hash_stats_cmd); } |