Add callback multiplex support

Change-Id: Iddeb3a1b0e20706e72ec8f74dabc60b342f003ba
Signed-off-by: Dave Barach <dave@barachs.net>
diff --git a/src/vlib/main.c b/src/vlib/main.c
index 759c1d0..b6006e8 100644
--- a/src/vlib/main.c
+++ b/src/vlib/main.c
@@ -687,9 +687,9 @@
 {
   *pmc0 = 0;
   *pmc1 = 0;
-  if (PREDICT_FALSE (vm->vlib_node_runtime_perf_counter_cb != 0))
-    (*vm->vlib_node_runtime_perf_counter_cb) (vm, pmc0, pmc1, node,
-					      frame, before_or_after);
+  if (PREDICT_FALSE (vec_len (vm->vlib_node_runtime_perf_counter_cbs) != 0))
+    clib_call_callbacks (vm->vlib_node_runtime_perf_counter_cbs, vm, pmc0,
+			 pmc1, node, frame, before_or_after);
 }
 
 always_inline void
@@ -1760,9 +1760,8 @@
 	      else
 		frame_queue_check_counter--;
 	    }
-	  if (PREDICT_FALSE (vm->worker_thread_main_loop_callback != 0))
-	    ((void (*)(vlib_main_t *)) vm->worker_thread_main_loop_callback)
-	      (vm);
+	  if (PREDICT_FALSE (vec_len (vm->worker_thread_main_loop_callbacks)))
+	    clib_call_callbacks (vm->worker_thread_main_loop_callbacks, vm);
 	}
 
       /* Process pre-input nodes. */