X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=lttng-context-callstack.c;fp=lttng-context-callstack.c;h=57738bed5275bd460f0e7be5bee61540ce1318e2;hb=60d51de0fde1942b4143bcaf8592fea368952864;hp=3b7859eb8542b8c6bc073288f2380cf3b29e37fb;hpb=64cc198b453a1fd05fb6f23bda08282ed0902c1c;p=lttng-modules.git diff --git a/lttng-context-callstack.c b/lttng-context-callstack.c index 3b7859eb..57738bed 100644 --- a/lttng-context-callstack.c +++ b/lttng-context-callstack.c @@ -156,8 +156,12 @@ size_t lttng_callstack_get_size(size_t offset, struct lttng_ctx_field *field, /* do not write data if no space is available */ trace = stack_trace_context(field, ctx); - if (!trace) - return 0; + if (unlikely(!trace)) { + size += lib_ring_buffer_align(offset, lttng_alignof(unsigned int)); + size += sizeof(unsigned int); + size += lib_ring_buffer_align(offset, lttng_alignof(unsigned long)); + return size; + } /* reset stack trace, no need to clear memory */ trace->nr_entries = 0; @@ -191,8 +195,13 @@ void lttng_callstack_record(struct lttng_ctx_field *field, struct stack_trace *trace = stack_trace_context(field, ctx); unsigned int nr_seq_entries; - if (!trace) + if (unlikely(!trace)) { + nr_seq_entries = 0; + lib_ring_buffer_align_ctx(ctx, lttng_alignof(unsigned int)); + chan->ops->event_write(ctx, &nr_seq_entries, sizeof(unsigned int)); + lib_ring_buffer_align_ctx(ctx, lttng_alignof(unsigned long)); return; + } lib_ring_buffer_align_ctx(ctx, lttng_alignof(unsigned int)); nr_seq_entries = trace->nr_entries; if (trace->nr_entries == trace->max_entries)