+ shared_header = ssvmp->sh;
+
+ oldheap = ssvm_push_heap (shared_header);
+
+ clib_spinlock_lock (sm->stat_segment_lockp);
+
+ vlib_node_get_nodes (0 /* vm, for barrier sync */ ,
+ (u32) ~ 0 /* all threads */ ,
+ 1 /* include stats */ ,
+ 0 /* barrier sync */ ,
+ &sm->node_dups, &sm->stat_vms);
+
+ sm->serialized_nodes = vlib_node_serialize (vm, sm->node_dups,
+ sm->serialized_nodes,
+ 0 /* include nexts */ ,
+ 1 /* include stats */ );
+
+ hp = hash_get_pair (sm->counter_vector_by_name, "serialized_nodes");
+ if (hp)
+ {
+ name_copy = (u8 *) hp->key;
+ ep = (stat_segment_directory_entry_t *) (hp->value[0]);
+
+ if (ep->value != sm->serialized_nodes)
+ {
+ ep->value = sm->serialized_nodes;
+ /* Warn clients to refresh any pointers they might be holding */
+ shared_header->opaque[STAT_SEGMENT_OPAQUE_EPOCH] = (void *)
+ ((u64) shared_header->opaque[STAT_SEGMENT_OPAQUE_EPOCH] + 1);
+ }
+ }
+ else