libsysprof: increase priority of mapped ring buffer source

We want to reduce the chances we've lost anything in these, which is
pretty important for memory tracing.
This commit is contained in:
Christian Hergert
2023-08-15 14:41:23 -07:00
parent a9cf64903c
commit b96bf5c969
3 changed files with 9 additions and 5 deletions

View File

@ -33,7 +33,8 @@ guint mapped_ring_buffer_create_source (MappedRingBuffer *self,
MappedRingBufferCallback callback, MappedRingBufferCallback callback,
gpointer user_data); gpointer user_data);
G_GNUC_INTERNAL G_GNUC_INTERNAL
guint mapped_ring_buffer_create_source_full (MappedRingBuffer *self, guint mapped_ring_buffer_create_source_full (int priority,
MappedRingBuffer *self,
MappedRingBufferCallback callback, MappedRingBufferCallback callback,
gpointer user_data, gpointer user_data,
GDestroyNotify destroy); GDestroyNotify destroy);

View File

@ -89,7 +89,8 @@ static GSourceFuncs mapped_ring_source_funcs = {
}; };
guint guint
mapped_ring_buffer_create_source_full (MappedRingBuffer *self, mapped_ring_buffer_create_source_full (int priority,
MappedRingBuffer *self,
MappedRingBufferCallback source_func, MappedRingBufferCallback source_func,
gpointer user_data, gpointer user_data,
GDestroyNotify destroy) GDestroyNotify destroy)
@ -103,7 +104,8 @@ mapped_ring_buffer_create_source_full (MappedRingBuffer *self,
source = (MappedRingSource *)g_source_new (&mapped_ring_source_funcs, sizeof (MappedRingSource)); source = (MappedRingSource *)g_source_new (&mapped_ring_source_funcs, sizeof (MappedRingSource));
source->buffer = mapped_ring_buffer_ref (self); source->buffer = mapped_ring_buffer_ref (self);
g_source_set_callback ((GSource *)source, (GSourceFunc)source_func, user_data, destroy); g_source_set_callback ((GSource *)source, (GSourceFunc)source_func, user_data, destroy);
g_source_set_name ((GSource *)source, "MappedRingSource"); g_source_set_static_name ((GSource *)source, "MappedRingSource");
g_source_set_priority ((GSource *)source, priority);
ret = g_source_attach ((GSource *)source, g_main_context_default ()); ret = g_source_attach ((GSource *)source, g_main_context_default ());
g_source_unref ((GSource *)source); g_source_unref ((GSource *)source);
@ -115,5 +117,5 @@ mapped_ring_buffer_create_source (MappedRingBuffer *self,
MappedRingBufferCallback source_func, MappedRingBufferCallback source_func,
gpointer user_data) gpointer user_data)
{ {
return mapped_ring_buffer_create_source_full (self, source_func, user_data, NULL); return mapped_ring_buffer_create_source_full (G_PRIORITY_DEFAULT, self, source_func, user_data, NULL);
} }

View File

@ -241,7 +241,8 @@ sysprof_controlfd_instrument_record_fiber (gpointer user_data)
ring_data = g_new0 (RingData, 1); ring_data = g_new0 (RingData, 1);
ring_data->writer = sysprof_capture_writer_ref (temp_writer); ring_data->writer = sysprof_capture_writer_ref (temp_writer);
ring_data->source_ids = g_array_ref (state->source_ids); ring_data->source_ids = g_array_ref (state->source_ids);
ring_data->id = mapped_ring_buffer_create_source_full (ring_buffer, ring_data->id = mapped_ring_buffer_create_source_full (G_PRIORITY_HIGH,
ring_buffer,
sysprof_controlfd_instrument_frame_cb, sysprof_controlfd_instrument_frame_cb,
ring_data, ring_data,
(GDestroyNotify)ring_data_free); (GDestroyNotify)ring_data_free);