libsysprof-capture: add metadata frame type

This will allow sources and aids to discover information about what was
done between capture loading and saving.
This commit is contained in:
Christian Hergert
2019-05-19 21:57:52 -07:00
parent 53a337bf00
commit db9aea95ea
9 changed files with 189 additions and 2 deletions

View File

@ -587,6 +587,51 @@ sysprof_capture_writer_add_mark (SysprofCaptureWriter *self,
return TRUE;
}
gboolean
sysprof_capture_writer_add_metadata (SysprofCaptureWriter *self,
gint64 time,
gint cpu,
gint32 pid,
const gchar *id,
const gchar *metadata,
gssize metadata_len)
{
SysprofCaptureMetadata *ev;
gsize len;
g_assert (self != NULL);
g_assert (id != NULL);
if (metadata == NULL)
{
metadata = "";
len = 0;
}
if (metadata_len < 0)
metadata_len = strlen (metadata);
len = sizeof *ev + metadata_len + 1;
ev = (SysprofCaptureMetadata *)sysprof_capture_writer_allocate (self, &len);
if (!ev)
return FALSE;
sysprof_capture_writer_frame_init (&ev->frame,
len,
cpu,
pid,
time,
SYSPROF_CAPTURE_FRAME_METADATA);
g_strlcpy (ev->id, id, sizeof ev->id);
memcpy (ev->metadata, metadata, metadata_len);
ev->metadata[metadata_len] = 0;
self->stat.frame_count[SYSPROF_CAPTURE_FRAME_METADATA]++;
return TRUE;
}
SysprofCaptureAddress
sysprof_capture_writer_add_jitmap (SysprofCaptureWriter *self,
const gchar *name)