From 20f4aa265ec8442be66f00ee3986a92018b44b7b Mon Sep 17 00:00:00 2001 From: Daniel P. Berrange Date: Fri, 30 Sep 2016 11:50:18 +0100 Subject: io: add ability to set a name for IO channels The GSource object has ability to have a name, which is useful when debugging performance problems with the mainloop event callbacks that take too long. By associating a name with a QIOChannel object, we can then set the name on any GSource associated with the channel. Reviewed-by: Eric Blake Signed-off-by: Daniel P. Berrange --- include/glib-compat.h | 7 +++++++ include/io/channel.h | 13 +++++++++++++ 2 files changed, 20 insertions(+) (limited to 'include') diff --git a/include/glib-compat.h b/include/glib-compat.h index 8093163bee..9dfe952c5d 100644 --- a/include/glib-compat.h +++ b/include/glib-compat.h @@ -304,4 +304,11 @@ static inline void g_slist_free_full(GSList *list, GDestroyNotify free_func) } #endif +#if !GLIB_CHECK_VERSION(2, 26, 0) +static inline void g_source_set_name(GSource *source, const char *name) +{ + /* This is just a debugging aid, so leaving it a no-op */ +} +#endif + #endif diff --git a/include/io/channel.h b/include/io/channel.h index cf1c6223fa..32a9470794 100644 --- a/include/io/channel.h +++ b/include/io/channel.h @@ -79,6 +79,7 @@ typedef gboolean (*QIOChannelFunc)(QIOChannel *ioc, struct QIOChannel { Object parent; unsigned int features; /* bitmask of QIOChannelFeatures */ + char *name; #ifdef _WIN32 HANDLE event; /* For use with GSource on Win32 */ #endif @@ -158,6 +159,18 @@ bool qio_channel_has_feature(QIOChannel *ioc, void qio_channel_set_feature(QIOChannel *ioc, QIOChannelFeature feature); +/** + * qio_channel_set_name: + * @ioc: the channel object + * @name: the name of the channel + * + * Sets the name of the channel, which serves as an aid + * to debugging. The name is used when creating GSource + * watches for this channel. + */ +void qio_channel_set_name(QIOChannel *ioc, + const char *name); + /** * qio_channel_readv_full: * @ioc: the channel object -- cgit v1.2.3-55-g7522