From: Enlightenment S. <no-...@en...> - 2012-02-09 00:06:21
|
Log: eina_sched: fix rt priority drop Thanks to cedric for noticing this bug. Priority in userspace are in the opposite order as in kernel space. Author: lucas Date: 2012-02-08 16:06:14 -0800 (Wed, 08 Feb 2012) New Revision: 67776 Trac: http://trac.enlightenment.org/e/changeset/67776 Modified: trunk/eina/src/lib/eina_sched.c Modified: trunk/eina/src/lib/eina_sched.c =================================================================== --- trunk/eina/src/lib/eina_sched.c 2012-02-08 23:04:05 UTC (rev 67775) +++ trunk/eina/src/lib/eina_sched.c 2012-02-09 00:06:14 UTC (rev 67776) @@ -41,7 +41,7 @@ #include "eina_sched.h" #include "eina_log.h" -#define RTNICENESS 5 +#define RTNICENESS 1 #define NICENESS 5 EAPI void @@ -62,11 +62,15 @@ if (EINA_UNLIKELY(pol == SCHED_RR || pol == SCHED_FIFO)) { - prio = sched_get_priority_max(pol); - param.sched_priority += RTNICENESS; - if (prio > 0 && param.sched_priority > prio) - param.sched_priority = prio; + param.sched_priority -= RTNICENESS; + /* We don't change the policy */ + if (param.sched_priority < 1) + { + EINA_LOG_INFO("RT prio < 1, setting to 1 instead"); + param.sched_priority = 1; + } + pthread_setschedparam(pthread_id, pol, ¶m); } # ifdef __linux__ @@ -78,7 +82,10 @@ { prio += NICENESS; if (prio > 19) - prio = 19; + { + EINA_LOG_INFO("Max niceness reached; keeping max (19)"); + prio = 19; + } setpriority(PRIO_PROCESS, 0, prio); } |