Use TLS variable for key state
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fri, 15 Dec 2023 20:17:25 +0000 (15:17 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fri, 15 Dec 2023 20:17:25 +0000 (15:17 -0500)
Keep this hidden from the application.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
src/side.c

index 67f57bea2cfb381ff50e09ee77322b02b89fce18..df6123684f3d207c7a4cefe6008b68d4756c8aee 100644 (file)
@@ -71,13 +71,19 @@ static pthread_mutex_t side_lock = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
 static DEFINE_SIDE_LIST_HEAD(side_events_list);
 static DEFINE_SIDE_LIST_HEAD(side_tracer_list);
 
+/*
+ * Callback filter key for state dump.
+ */
+static __thread void *filter_key;
+
 /*
  * The empty callback has a NULL function callback pointer, which stops
  * iteration on the array of callbacks immediately.
  */
 const char side_empty_callback[sizeof(struct side_callback)];
 
-void side_call_key(const struct side_event_state *event_state, const struct side_arg_vec *side_arg_vec, void *key)
+static
+void _side_call(const struct side_event_state *event_state, const struct side_arg_vec *side_arg_vec, void *key)
 {
        struct side_rcu_read_state rcu_read_state;
        const struct side_event_state_0 *es0;
@@ -108,10 +114,16 @@ void side_call_key(const struct side_event_state *event_state, const struct side
 
 void side_call(const struct side_event_state *event_state, const struct side_arg_vec *side_arg_vec)
 {
-       side_call_key(event_state, side_arg_vec, NULL);
+       _side_call(event_state, side_arg_vec, NULL);
 }
 
-void side_call_variadic_key(const struct side_event_state *event_state,
+void side_call_key(const struct side_event_state *event_state, const struct side_arg_vec *side_arg_vec)
+{
+       _side_call(event_state, side_arg_vec, filter_key);
+}
+
+static
+void _side_call_variadic(const struct side_event_state *event_state,
        const struct side_arg_vec *side_arg_vec,
        const struct side_arg_dynamic_struct *var_struct,
        void *key)
@@ -147,7 +159,14 @@ void side_call_variadic(const struct side_event_state *event_state,
        const struct side_arg_vec *side_arg_vec,
        const struct side_arg_dynamic_struct *var_struct)
 {
-       side_call_variadic_key(event_state, side_arg_vec, var_struct, NULL);
+       _side_call_variadic(event_state, side_arg_vec, var_struct, NULL);
+}
+
+void side_call_variadic_key(const struct side_event_state *event_state,
+       const struct side_arg_vec *side_arg_vec,
+       const struct side_arg_dynamic_struct *var_struct)
+{
+       _side_call_variadic(event_state, side_arg_vec, var_struct, filter_key);
 }
 
 static
This page took 0.023921 seconds and 4 git commands to generate.