aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Nardi <12729895+IvanNardi@users.noreply.github.com>2023-04-06 09:36:11 +0200
committerGitHub <noreply@github.com>2023-04-06 09:36:11 +0200
commit7a627296f0a032ea0d73989531f21096e1f295e9 (patch)
treeb51658d24a31a4f64611f5bd10f3fd3c8c672906
parentb639744c3ab4cc8879731675d70264c7b1cb1f18 (diff)
Fix LRU/Patricia/Automa stats in `ndpiReader` with multiple threads (#1934)
-rw-r--r--example/ndpiReader.c25
1 files changed, 19 insertions, 6 deletions
diff --git a/example/ndpiReader.c b/example/ndpiReader.c
index 6ac994802..fe2add266 100644
--- a/example/ndpiReader.c
+++ b/example/ndpiReader.c
@@ -3473,16 +3473,29 @@ static void printResults(u_int64_t processing_time_usec, u_int64_t setup_time_us
cumulative_stats.num_dissector_calls += ndpi_thread_info[thread_id].workflow->stats.num_dissector_calls;
/* LRU caches */
- for(i = 0; i < NDPI_LRUCACHE_MAX; i++)
- ndpi_get_lru_cache_stats(ndpi_thread_info[thread_id].workflow->ndpi_struct, i, &cumulative_stats.lru_stats[i]);
+ for(i = 0; i < NDPI_LRUCACHE_MAX; i++) {
+ struct ndpi_lru_cache_stats s;
+ ndpi_get_lru_cache_stats(ndpi_thread_info[thread_id].workflow->ndpi_struct, i, &s);
+ cumulative_stats.lru_stats[i].n_insert += s.n_insert;
+ cumulative_stats.lru_stats[i].n_search += s.n_search;
+ cumulative_stats.lru_stats[i].n_found += s.n_found;
+ }
/* Automas */
- for(i = 0; i < NDPI_AUTOMA_MAX; i++)
- ndpi_get_automa_stats(ndpi_thread_info[thread_id].workflow->ndpi_struct, i, &cumulative_stats.automa_stats[i]);
+ for(i = 0; i < NDPI_AUTOMA_MAX; i++) {
+ struct ndpi_automa_stats s;
+ ndpi_get_automa_stats(ndpi_thread_info[thread_id].workflow->ndpi_struct, i, &s);
+ cumulative_stats.automa_stats[i].n_search += s.n_search;
+ cumulative_stats.automa_stats[i].n_found += s.n_found;
+ }
/* Patricia trees */
- for(i = 0; i < NDPI_PTREE_MAX; i++)
- ndpi_get_patricia_stats(ndpi_thread_info[thread_id].workflow->ndpi_struct, i, &cumulative_stats.patricia_stats[i]);
+ for(i = 0; i < NDPI_PTREE_MAX; i++) {
+ struct ndpi_patricia_tree_stats s;
+ ndpi_get_patricia_stats(ndpi_thread_info[thread_id].workflow->ndpi_struct, i, &s);
+ cumulative_stats.patricia_stats[i].n_search += s.n_search;
+ cumulative_stats.patricia_stats[i].n_found += s.n_found;
+ }
}
if(cumulative_stats.total_wire_bytes == 0)