summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <slomo@coaxion.net>2020-09-02 15:28:17 +0000
committerSebastian Dröge <slomo@coaxion.net>2020-09-02 15:28:17 +0000
commit054ef4ddf71a8435501c0daff3c293d896a73841 (patch)
tree0924ce1a4769c4e8e8d6d40de68570ea90ba4a22
parenteba91d5c871108ea057e0cd92db552b472517c9e (diff)
parentc8840ff9a8f8445e81ded935bb6637857089a99f (diff)
downloadglib-054ef4ddf71a8435501c0daff3c293d896a73841.tar.gz
Merge branch '2191-scheduler-warnings' into 'master'
gthread: Only print scheduler setting warnings once Closes #2191 See merge request GNOME/glib!1637
-rw-r--r--glib/gthread-posix.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/glib/gthread-posix.c b/glib/gthread-posix.c
index 29bc81a0f..f36055925 100644
--- a/glib/gthread-posix.c
+++ b/glib/gthread-posix.c
@@ -1235,6 +1235,7 @@ static void *
linux_pthread_proxy (void *data)
{
GThreadPosix *thread = data;
+ static gboolean printed_scheduler_warning = FALSE; /* (atomic) */
/* Set scheduler settings first if requested */
if (thread->scheduler_settings)
@@ -1247,8 +1248,11 @@ linux_pthread_proxy (void *data)
tid = (pid_t) syscall (SYS_gettid);
res = syscall (SYS_sched_setattr, tid, thread->scheduler_settings->attr, flags);
errsv = errno;
- if (res == -1)
+ if (res == -1 && g_atomic_int_compare_and_exchange (&printed_scheduler_warning, FALSE, TRUE))
g_critical ("Failed to set scheduler settings: %s", g_strerror (errsv));
+ else if (res == -1)
+ g_debug ("Failed to set scheduler settings: %s", g_strerror (errsv));
+ printed_scheduler_warning = TRUE;
}
return thread->proxy (data);