From: Francis Giraldeau <[email protected]> LTTng callstack context. The callstack context can be added to any kernel channel. It records either the kernel or the userspace callstack, up to a max depth. The context is a CTF sequence, such that it uses only the space required for the number of callstack entries.
The symbol name resolution is left to the trace reader. Signed-off-by: Francis Giraldeau <[email protected]> Signed-off-by: Mathieu Desnoyers <[email protected]> --- include/lttng/event.h | 2 ++ src/bin/lttng-sessiond/context.c | 6 ++++++ src/bin/lttng/commands/add_context.c | 4 ++++ src/common/lttng-kernel.h | 2 ++ 4 files changed, 14 insertions(+) diff --git a/include/lttng/event.h b/include/lttng/event.h index 16b4d4f..cd62cfb 100644 --- a/include/lttng/event.h +++ b/include/lttng/event.h @@ -142,6 +142,8 @@ enum lttng_event_context_type { LTTNG_EVENT_CONTEXT_PREEMPTIBLE = 17, LTTNG_EVENT_CONTEXT_NEED_RESCHEDULE = 18, LTTNG_EVENT_CONTEXT_MIGRATABLE = 19, + LTTNG_EVENT_CONTEXT_CALLSTACK_KERNEL = 20, + LTTNG_EVENT_CONTEXT_CALLSTACK_USER = 21, }; enum lttng_event_field_type { diff --git a/src/bin/lttng-sessiond/context.c b/src/bin/lttng-sessiond/context.c index 9c3a394..b4d82ff 100644 --- a/src/bin/lttng-sessiond/context.c +++ b/src/bin/lttng-sessiond/context.c @@ -241,6 +241,12 @@ int context_kernel_add(struct ltt_kernel_session *ksession, case LTTNG_EVENT_CONTEXT_MIGRATABLE: kctx->ctx.ctx = LTTNG_KERNEL_CONTEXT_MIGRATABLE; break; + case LTTNG_EVENT_CONTEXT_CALLSTACK_KERNEL: + kctx->ctx.ctx = LTTNG_KERNEL_CONTEXT_CALLSTACK_KERNEL; + break; + case LTTNG_EVENT_CONTEXT_CALLSTACK_USER: + kctx->ctx.ctx = LTTNG_KERNEL_CONTEXT_CALLSTACK_USER; + break; default: ret = LTTNG_ERR_KERN_CONTEXT_FAIL; goto error; diff --git a/src/bin/lttng/commands/add_context.c b/src/bin/lttng/commands/add_context.c index df722bb..c2f3bf1 100644 --- a/src/bin/lttng/commands/add_context.c +++ b/src/bin/lttng/commands/add_context.c @@ -78,6 +78,8 @@ enum context_type { CONTEXT_PREEMPTIBLE = 17, CONTEXT_NEED_RESCHEDULE = 18, CONTEXT_MIGRATABLE = 19, + CONTEXT_CALLSTACK_KERNEL = 20, + CONTEXT_CALLSTACK_USER = 21, }; /* @@ -234,6 +236,8 @@ const struct ctx_opts { { "preemptible", CONTEXT_PREEMPTIBLE }, { "need_reschedule", CONTEXT_NEED_RESCHEDULE }, { "migratable", CONTEXT_MIGRATABLE }, + { "callstack-kernel", CONTEXT_CALLSTACK_KERNEL }, + { "callstack-user", CONTEXT_CALLSTACK_USER }, /* Perf options */ diff --git a/src/common/lttng-kernel.h b/src/common/lttng-kernel.h index 8d87539..9d6d60c 100644 --- a/src/common/lttng-kernel.h +++ b/src/common/lttng-kernel.h @@ -58,6 +58,8 @@ enum lttng_kernel_context_type { LTTNG_KERNEL_CONTEXT_PREEMPTIBLE = 13, LTTNG_KERNEL_CONTEXT_NEED_RESCHEDULE = 14, LTTNG_KERNEL_CONTEXT_MIGRATABLE = 15, + LTTNG_KERNEL_CONTEXT_CALLSTACK_KERNEL = 16, + LTTNG_KERNEL_CONTEXT_CALLSTACK_USER = 17, }; /* Perf counter attributes */ -- 2.1.4 _______________________________________________ lttng-dev mailing list [email protected] https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
