{
struct sched_param params;
int min;
-
- min = sched_get_priority_min(SCHED_IDLE);
+#ifdef SCHED_IDLE
+ int pol = SCHED_IDLE;
+#else
+ int pol;
+ pthread_getschedparam(self, &pol, ¶ms);
+#endif
+ min = sched_get_priority_min(pol);
params.sched_priority = min;
- pthread_setschedparam(self, SCHED_IDLE, ¶ms);
+ pthread_setschedparam(self, pol, ¶ms);
}
else if (c->prio == EINA_THREAD_BACKGROUND)
{
struct sched_param params;
int min, max;
-
- min = sched_get_priority_min(SCHED_BATCH);
- max = sched_get_priority_max(SCHED_BATCH);
+#ifdef SCHED_BATCH
+ int pol = SCHED_BATCH;
+#else
+ int pol;
+ pthread_getschedparam(self, &pol, ¶ms);
+#endif
+ min = sched_get_priority_min(pol);
+ max = sched_get_priority_max(pol);
params.sched_priority = (max - min) / 2;
- pthread_setschedparam(self, SCHED_BATCH, ¶ms);
+ pthread_setschedparam(self, pol, ¶ms);
}
// do nothing for normal
// else if (c->prio == EINA_THREAD_NORMAL)