Timer notifications in event library require handling stopwatch
across one or more events, so share few required functions.

Signed-off-by: Gowrishankar Muthukrishnan <gmuth...@redhat.com>
---
 lib/stopwatch.c | 20 +++++++++++++++++++-
 lib/stopwatch.h |  9 +++++++++
 2 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/lib/stopwatch.c b/lib/stopwatch.c
index f560216..0858d72 100644
--- a/lib/stopwatch.c
+++ b/lib/stopwatch.c
@@ -463,7 +463,7 @@ stopwatch_thread(void *ign OVS_UNUSED)
     return NULL;
 }
 
-static void
+void
 stopwatch_exit(void)
 {
     struct shash_node *node, *node_next;
@@ -526,6 +526,24 @@ stopwatch_create(const char *name, enum stopwatch_units 
units)
 }
 
 void
+stopwatch_delete(const char *name)
+{
+    ovs_mutex_lock(&stopwatches_lock);
+    shash_find_and_delete(&stopwatches, name);
+    ovs_mutex_unlock(&stopwatches_lock);
+}
+
+unsigned int
+stopwatch_count(void)
+{
+    unsigned int n;
+    ovs_mutex_lock(&stopwatches_lock);
+    n = shash_count(&stopwatches);
+    ovs_mutex_unlock(&stopwatches_lock);
+    return n;
+}
+
+void
 stopwatch_start(const char *name, unsigned long long ts)
 {
     struct stopwatch_packet *pkt = stopwatch_packet_create(OP_START_SAMPLE);
diff --git a/lib/stopwatch.h b/lib/stopwatch.h
index 91abd64..2f8e56c 100644
--- a/lib/stopwatch.h
+++ b/lib/stopwatch.h
@@ -56,4 +56,13 @@ bool stopwatch_get_stats(const char *name, struct 
stopwatch_stats *stats);
 /* Block until all enqueued samples have been processed. */
 void stopwatch_sync(void);
 
+/* Delete stopwatch */
+void stopwatch_delete(const char *name);
+
+/* Count stopwatches */
+unsigned int stopwatch_count(void);
+
+/* Exit stopwatch */
+void stopwatch_exit(void);
+
 #endif /* stopwatch.h */
-- 
1.8.3.1

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to