FIB: encode the label stack in the FIB path during table dump
[vpp.git] / src / vppinfra / tw_timer_template.h
index 0404e3f..e581f07 100644 (file)
@@ -170,6 +170,13 @@ typedef enum
 } tw_ring_index_t;
 #endif /* __defined_tw_timer_wheel_slot__ */
 
+typedef CLIB_PACKED (struct
+                    {
+                    u8 timer_id;
+                    u32 pool_index;
+                    u32 handle;
+                    }) TWT (trace);
+
 typedef struct
 {
   /** Timer pool */
@@ -211,17 +218,29 @@ typedef struct
   /** expired timer callback, receives a vector of handles */
   void (*expired_timer_callback) (u32 * expired_timer_handles);
 
-  /** vector of expired timers */
+  /** vectors of expired timers */
   u32 *expired_timer_handles;
 
   /** maximum expirations */
   u32 max_expirations;
+
+  /** current trace index */
+#if TW_START_STOP_TRACE_SIZE > 0
+  /* Start/stop/expire tracing */
+  u32 trace_index;
+  u32 trace_wrapped;
+    TWT (trace) traces[TW_START_STOP_TRACE_SIZE];
+#endif
+
 } TWT (tw_timer_wheel);
 
 u32 TW (tw_timer_start) (TWT (tw_timer_wheel) * tw,
                         u32 pool_index, u32 timer_id, u64 interval);
 
 void TW (tw_timer_stop) (TWT (tw_timer_wheel) * tw, u32 handle);
+int TW (tw_timer_handle_is_free) (TWT (tw_timer_wheel) * tw, u32 handle);
+void TW (tw_timer_update) (TWT (tw_timer_wheel) * tw, u32 handle,
+                          u64 interval);
 
 void TW (tw_timer_wheel_init) (TWT (tw_timer_wheel) * tw,
                               void *expired_timer_callback,
@@ -236,6 +255,12 @@ u32 *TW (tw_timer_expire_timers_vec) (TWT (tw_timer_wheel) * tw, f64 now,
 u32 TW (tw_timer_first_expires_in_ticks) (TWT (tw_timer_wheel) * tw);
 #endif
 
+#if TW_START_STOP_TRACE_SIZE > 0
+void TW (tw_search_trace) (TWT (tw_timer_wheel) * tw, u32 handle);
+void TW (tw_timer_trace) (TWT (tw_timer_wheel) * tw, u32 timer_id,
+                         u32 pool_index, u32 handle);
+#endif
+
 /*
  * fd.io coding-style-patch-verification: ON
  *