Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
STATS: stat_client updates.
[vpp.git]
/
src
/
vpp
/
stats
/
stat_segment.c
diff --git
a/src/vpp/stats/stat_segment.c
b/src/vpp/stats/stat_segment.c
index
29b3bf3
..
8459138
100644
(file)
--- a/
src/vpp/stats/stat_segment.c
+++ b/
src/vpp/stats/stat_segment.c
@@
-43,7
+43,7
@@
vlib_stats_push_heap (void)
}
void
}
void
-vlib_stats_pop_heap (void *cm_arg, void *oldheap)
+vlib_stats_pop_heap (void *cm_arg, void *oldheap
, stat_directory_type_t type
)
{
vlib_simple_counter_main_t *cm = (vlib_simple_counter_main_t *) cm_arg;
stats_main_t *sm = &stats_main;
{
vlib_simple_counter_main_t *cm = (vlib_simple_counter_main_t *) cm_arg;
stats_main_t *sm = &stats_main;
@@
-80,7
+80,7
@@
vlib_stats_pop_heap (void *cm_arg, void *oldheap)
}
name_copy = format (0, "%s%c", stat_segment_name, 0);
ep = clib_mem_alloc (sizeof (*ep));
}
name_copy = format (0, "%s%c", stat_segment_name, 0);
ep = clib_mem_alloc (sizeof (*ep));
- ep->type =
STAT_DIR_TYPE_COUNTER_VECTOR
;
+ ep->type =
type
;
ep->value = cm->counters;
hash_set_mem (sm->counter_vector_by_name, name_copy, ep);
ep->value = cm->counters;
hash_set_mem (sm->counter_vector_by_name, name_copy, ep);
@@
-236,6
+236,7
@@
vlib_map_stat_segment_init (void)
sm->input_rate_ptr = (scalar_data + 1);
sm->last_runtime_ptr = (scalar_data + 2);
sm->last_runtime_stats_clear_ptr = (scalar_data + 3);
sm->input_rate_ptr = (scalar_data + 1);
sm->last_runtime_ptr = (scalar_data + 2);
sm->last_runtime_stats_clear_ptr = (scalar_data + 3);
+ sm->heartbeat_ptr = (scalar_data + 4);
name = format (0, "/sys/vector_rate%c", 0);
ep = clib_mem_alloc (sizeof (*ep));
name = format (0, "/sys/vector_rate%c", 0);
ep = clib_mem_alloc (sizeof (*ep));
@@
-265,6
+266,13
@@
vlib_map_stat_segment_init (void)
hash_set_mem (sm->counter_vector_by_name, name, ep);
hash_set_mem (sm->counter_vector_by_name, name, ep);
+ name = format (0, "/sys/heartbeat%c", 0);
+ ep = clib_mem_alloc (sizeof (*ep));
+ ep->type = STAT_DIR_TYPE_SCALAR_POINTER;
+ ep->value = sm->heartbeat_ptr;
+
+ hash_set_mem (sm->counter_vector_by_name, name, ep);
+
/* Publish the hash table */
shared_header->opaque[STAT_SEGMENT_OPAQUE_DIR] = sm->counter_vector_by_name;
/* Publish the hash table */
shared_header->opaque[STAT_SEGMENT_OPAQUE_DIR] = sm->counter_vector_by_name;
@@
-309,7
+317,8
@@
format_stat_dir_entry (u8 * s, va_list * args)
type_name = "VectorPtr";
break;
type_name = "VectorPtr";
break;
- case STAT_DIR_TYPE_COUNTER_VECTOR:
+ case STAT_DIR_TYPE_COUNTER_VECTOR_SIMPLE:
+ case STAT_DIR_TYPE_COUNTER_VECTOR_COMBINED:
type_name = "CMainPtr";
break;
type_name = "CMainPtr";
break;
@@
-512,6
+521,9
@@
do_stat_segment_updates (stats_main_t * sm)
if (sm->serialize_nodes)
update_serialized_nodes (sm);
if (sm->serialize_nodes)
update_serialized_nodes (sm);
+
+ /* Heartbeat, so clients detect we're still here */
+ (*sm->heartbeat_ptr)++;
}
static clib_error_t *
}
static clib_error_t *