mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-09 14:40:54 +00:00
libsysprof-capture: add collector interface for samples
This commit is contained in:
@ -364,3 +364,37 @@ sysprof_collector_allocate (SysprofCaptureAddress alloc_addr,
|
|||||||
|
|
||||||
} COLLECTOR_END;
|
} COLLECTOR_END;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
sysprof_collector_sample (SysprofBacktraceFunc backtrace_func,
|
||||||
|
gpointer backtrace_data)
|
||||||
|
{
|
||||||
|
COLLECTOR_BEGIN {
|
||||||
|
SysprofCaptureSample *ev;
|
||||||
|
gsize len;
|
||||||
|
|
||||||
|
len = sizeof *ev + (sizeof (SysprofCaptureSample) * MAX_UNWIND_DEPTH);
|
||||||
|
|
||||||
|
if ((ev = mapped_ring_buffer_allocate (collector->buffer, len)))
|
||||||
|
{
|
||||||
|
gint n_addrs;
|
||||||
|
|
||||||
|
/* See comment from sysprof_collector_allocate(). */
|
||||||
|
if (backtrace_func)
|
||||||
|
n_addrs = backtrace_func (ev->addrs, MAX_UNWIND_DEPTH, backtrace_data);
|
||||||
|
else
|
||||||
|
n_addrs = 0;
|
||||||
|
|
||||||
|
ev->n_addrs = CLAMP (n_addrs, 0, MAX_UNWIND_DEPTH);
|
||||||
|
ev->frame.len = sizeof *ev + sizeof (SysprofCaptureAddress) * ev->n_addrs;
|
||||||
|
ev->frame.type = SYSPROF_CAPTURE_FRAME_SAMPLE;
|
||||||
|
ev->frame.cpu = _do_getcpu ();
|
||||||
|
ev->frame.pid = collector->pid;
|
||||||
|
ev->frame.time = SYSPROF_CAPTURE_CURRENT_TIME;
|
||||||
|
ev->tid = collector->tid;
|
||||||
|
|
||||||
|
mapped_ring_buffer_advance (collector->buffer, ev->frame.len);
|
||||||
|
}
|
||||||
|
|
||||||
|
} COLLECTOR_END;
|
||||||
|
}
|
||||||
|
|||||||
@ -68,5 +68,8 @@ void sysprof_collector_allocate (SysprofCaptureAddress
|
|||||||
gint64 alloc_size,
|
gint64 alloc_size,
|
||||||
SysprofBacktraceFunc backtrace_func,
|
SysprofBacktraceFunc backtrace_func,
|
||||||
gpointer backtrace_data);
|
gpointer backtrace_data);
|
||||||
|
SYSPROF_AVAILABLE_IN_3_36
|
||||||
|
void sysprof_collector_sample (SysprofBacktraceFunc backtrace_func,
|
||||||
|
gpointer backtrace_data);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|||||||
Reference in New Issue
Block a user