stats: missing dimension in stat_set_simple_counter
[vpp.git] / src / vpp-api / client / stat_client.h
index 9d2e50c..f8473ef 100644 (file)
@@ -101,8 +101,12 @@ _time_now_nsec (void)
 static inline void *
 stat_segment_adjust (stat_client_main_t * sm, void *data)
 {
-  return (void *) ((char *) sm->shared_header +
-                  ((char *) data - (char *) sm->shared_header->base));
+  void *p = (void *) ((char *) sm->shared_header +
+                     ((char *) data - (char *) sm->shared_header->base));
+  if (p > (void *) sm->shared_header &&
+      ((p + sizeof (p)) < ((void *) sm->shared_header + sm->memory_size)))
+    return p;
+  return 0;
 }
 
 /*
@@ -145,6 +149,19 @@ stat_segment_set_timeout_nsec (stat_client_main_t * sm, uint64_t timeout)
   sm->timeout = timeout;
 }
 
+/*
+ * set maximum number of nano seconds to wait for in_progress state
+ * this function can be called directly by module using shared stat
+ * segment
+ */
+static inline void
+stat_segment_set_timeout (uint64_t timeout)
+{
+  stat_client_main_t *sm = &stat_client_main;
+  stat_segment_set_timeout_nsec (sm, timeout);
+}
+
+
 static inline bool
 stat_segment_access_end (stat_segment_access_t * sa, stat_client_main_t * sm)
 {