|
|
|
@ -186,12 +186,15 @@ static void *thread_detach_func(void *d) { |
|
|
|
|
|
|
|
if (!scheduler) |
|
|
|
ilog(LOG_ERR, "Specified scheduler policy '%s' not found", dt->scheduler); |
|
|
|
else { |
|
|
|
else if (scheduler->num != -1) { |
|
|
|
struct sched_param param = { 0 }; |
|
|
|
|
|
|
|
if (!scheduler->nice) |
|
|
|
param.sched_priority = dt->priority; |
|
|
|
|
|
|
|
ilog(LOG_DEBUG, "Setting thread scheduling parameters to '%s' (%i) / %i", |
|
|
|
dt->scheduler, scheduler->num, param.sched_priority); |
|
|
|
|
|
|
|
if (pthread_setschedparam(*t, scheduler->num, ¶m)) |
|
|
|
ilog(LOG_ERR, "Failed to set thread scheduling parameters to '%s' (%i) / %i: %s", |
|
|
|
dt->scheduler, scheduler->num, param.sched_priority, |
|
|
|
@ -201,9 +204,11 @@ static void *thread_detach_func(void *d) { |
|
|
|
} |
|
|
|
|
|
|
|
if ((!scheduler && dt->priority) || (scheduler && scheduler->nice)) { |
|
|
|
ilog(LOG_DEBUG, "Setting thread nice value to %i", dt->priority); |
|
|
|
|
|
|
|
if (setpriority(PRIO_PROCESS, 0, dt->priority)) |
|
|
|
ilog(LOG_ERR, "Failed to set thread nice value: %s", |
|
|
|
strerror(errno)); |
|
|
|
ilog(LOG_ERR, "Failed to set thread nice value to %i: %s", |
|
|
|
dt->priority, strerror(errno)); |
|
|
|
} |
|
|
|
|
|
|
|
dt->func(dt->data); |
|
|
|
|