Prepare callstack common code for stackwalk
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 22 May 2019 01:15:44 +0000 (21:15 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 22 May 2019 14:49:07 +0000 (10:49 -0400)
Prepare the callstack common code for stackwalk implementation,
moving more legacy code to the legacy implementation header.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
lttng-context-callstack-legacy-impl.h
lttng-context-callstack.c

index a68e8a18954aff11787527d9c72d87ffe22210df..6b4f06278be412fa284a19203bee53b3d74b91c7 100644 (file)
@@ -53,6 +53,12 @@ static struct lttng_cs_type cs_types[] = {
        },
 };
 
+static
+const char *lttng_cs_ctx_mode_name(enum lttng_cs_ctx_modes mode)
+{
+       return cs_types[mode].name;
+}
+
 static
 int init_type(enum lttng_cs_ctx_modes mode)
 {
@@ -70,6 +76,25 @@ int init_type(enum lttng_cs_ctx_modes mode)
        return 0;
 }
 
+static
+void lttng_cs_set_init(struct lttng_cs __percpu *cs_set)
+{
+       int cpu, i;
+
+       for_each_possible_cpu(cpu) {
+               struct lttng_cs *cs;
+
+               cs = per_cpu_ptr(cs_set, cpu);
+               for (i = 0; i < RING_BUFFER_MAX_NESTING; i++) {
+                       struct lttng_cs_dispatch *dispatch;
+
+                       dispatch = &cs->dispatch[i];
+                       dispatch->stack_trace.entries = dispatch->entries;
+                       dispatch->stack_trace.max_entries = MAX_ENTRIES;
+               }
+       }
+}
+
 /* Keep track of nesting inside userspace callstack context code */
 DEFINE_PER_CPU(int, callstack_user_nesting);
 
index 3fccfcf270bf34e48053a5ab30b761d1dc5bffd6..4a4400408fcac6122382bbcb60abbe5a73a719a3 100644 (file)
@@ -63,7 +63,6 @@ void field_data_free(struct field_data *fdata)
 static
 struct field_data __percpu *field_data_create(enum lttng_cs_ctx_modes mode)
 {
-       int cpu, i;
        struct lttng_cs __percpu *cs_set;
        struct field_data *fdata;
 
@@ -73,20 +72,8 @@ struct field_data __percpu *field_data_create(enum lttng_cs_ctx_modes mode)
        cs_set = alloc_percpu(struct lttng_cs);
        if (!cs_set)
                goto error_alloc;
-
+       lttng_cs_set_init(cs_set);
        fdata->cs_percpu = cs_set;
-       for_each_possible_cpu(cpu) {
-               struct lttng_cs *cs;
-
-               cs = per_cpu_ptr(cs_set, cpu);
-               for (i = 0; i < RING_BUFFER_MAX_NESTING; i++) {
-                       struct lttng_cs_dispatch *dispatch;
-
-                       dispatch = &cs->dispatch[i];
-                       dispatch->stack_trace.entries = dispatch->entries;
-                       dispatch->stack_trace.max_entries = MAX_ENTRIES;
-               }
-       }
        fdata->mode = mode;
        return fdata;
 
@@ -107,7 +94,7 @@ static
 int __lttng_add_callstack_generic(struct lttng_ctx **ctx,
                enum lttng_cs_ctx_modes mode)
 {
-       const char *ctx_name = cs_types[mode].name;
+       const char *ctx_name = lttng_cs_ctx_mode_name(mode);
        struct lttng_ctx_field *field;
        struct field_data *fdata;
        int ret;
This page took 0.028063 seconds and 4 git commands to generate.