capture: add task-id (thread-id) to samples

This could let us do some amount of filtering by threads going
forward if we have that data available to us.
This commit is contained in:
Christian Hergert
2019-05-08 09:19:29 -07:00
parent 173b583556
commit 6b983ab8c1
6 changed files with 8 additions and 2 deletions

View File

@ -141,7 +141,7 @@ typedef struct
SpCaptureFrame frame; SpCaptureFrame frame;
guint32 n_addrs : 16; guint32 n_addrs : 16;
guint32 padding1 : 16; guint32 padding1 : 16;
guint32 padding2; gint32 tid;
SpCaptureAddress addrs[0]; SpCaptureAddress addrs[0];
} SpCaptureSample } SpCaptureSample
SP_ALIGNED_END(1); SP_ALIGNED_END(1);

View File

@ -648,6 +648,7 @@ sp_capture_writer_add_sample (SpCaptureWriter *self,
gint64 time, gint64 time,
gint cpu, gint cpu,
gint32 pid, gint32 pid,
gint32 tid,
const SpCaptureAddress *addrs, const SpCaptureAddress *addrs,
guint n_addrs) guint n_addrs)
{ {
@ -669,6 +670,7 @@ sp_capture_writer_add_sample (SpCaptureWriter *self,
time, time,
SP_CAPTURE_FRAME_SAMPLE); SP_CAPTURE_FRAME_SAMPLE);
ev->n_addrs = n_addrs; ev->n_addrs = n_addrs;
ev->tid = tid;
memcpy (ev->addrs, addrs, (n_addrs * sizeof (SpCaptureAddress))); memcpy (ev->addrs, addrs, (n_addrs * sizeof (SpCaptureAddress)));

View File

@ -76,6 +76,7 @@ gboolean sp_capture_writer_add_sample (SpCaptureWriter *
gint64 time, gint64 time,
gint cpu, gint cpu,
gint32 pid, gint32 pid,
gint32 tid,
const SpCaptureAddress *addrs, const SpCaptureAddress *addrs,
guint n_addrs); guint n_addrs);
gboolean sp_capture_writer_add_fork (SpCaptureWriter *self, gboolean sp_capture_writer_add_fork (SpCaptureWriter *self,

View File

@ -284,6 +284,7 @@ sp_perf_source_handle_callchain (SpPerfSource *self,
sample->time, sample->time,
cpu, cpu,
sample->pid, sample->pid,
sample->tid,
ips, ips,
n_ips); n_ips);
} }

View File

@ -326,7 +326,7 @@ test_reader_basic (void)
for (j = 0; j < i; j++) for (j = 0; j < i; j++)
addrs[j] = i; addrs[j] = i;
if (!sp_capture_writer_add_sample (writer, t, -1, -1, addrs, i)) if (!sp_capture_writer_add_sample (writer, t, -1, -1, -2, addrs, i))
g_assert_not_reached (); g_assert_not_reached ();
} }
@ -349,6 +349,7 @@ test_reader_basic (void)
g_assert_cmpint (sample->frame.time, ==, t); g_assert_cmpint (sample->frame.time, ==, t);
g_assert_cmpint (sample->frame.cpu, ==, -1); g_assert_cmpint (sample->frame.cpu, ==, -1);
g_assert_cmpint (sample->frame.pid, ==, -1); g_assert_cmpint (sample->frame.pid, ==, -1);
g_assert_cmpint (sample->tid, ==, -2);
g_assert_cmpint (sample->n_addrs, ==, i); g_assert_cmpint (sample->n_addrs, ==, i);
for (j = 0; j < i; j++) for (j = 0; j < i; j++)

View File

@ -317,6 +317,7 @@ main (gint argc,
frame->frame.time, frame->frame.time,
frame->frame.cpu, frame->frame.cpu,
frame->frame.pid, frame->frame.pid,
frame->tid,
addrs, addrs,
frame->n_addrs); frame->n_addrs);
} }