Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

pthread_attr_{get,sed}schedparam and glib-2.18.x



Hi,

I've found that glib's gthread code calls pthread_attr_getschedparam()
when creating new threads, and that it always returns ENOMEM.

After looking at NetBSD's libpthread it seems that you aren't allowed to
call _getschedparam() without first calling _setschedparam() which allocates
a pthread_attr_private structure that _getschedparam() needs access to.

My question is, is NetBSD's libpthread correct with this behaviour?
or should glib be fixed as I did with the following patch?

--- gthread/gthread-posix.c.orig        2008-10-10 07:22:09.000000000 +0200
+++ gthread/gthread-posix.c     2008-10-10 07:22:29.000000000 +0200
@@ -343,9 +343,9 @@ g_thread_create_posix_impl (GThreadFunc 
 # ifdef G_THREADS_IMPL_POSIX
   {
     struct sched_param sched;
-    posix_check_cmd (pthread_attr_getschedparam (&attr, &sched));
     sched.sched_priority = g_thread_priority_map [priority];
     posix_check_cmd_prio (pthread_attr_setschedparam (&attr, &sched));
+    posix_check_cmd (pthread_attr_getschedparam (&attr, &sched));
   }
 # else /* G_THREADS_IMPL_DCE */
   posix_check_cmd_prio



Home | Main Index | Thread Index | Old Index