fix setpriority

This commit is contained in:
NIIBE Yutaka
2016-06-29 16:36:53 +09:00
parent 15a4403f24
commit 986518fba7
2 changed files with 18 additions and 4 deletions

View File

@@ -1,3 +1,7 @@
2016-06-29 NIIBE Yutaka <gniibe@fsij.org>
* chopstx.c (chopstx_setpriority): Fix sched_lock/unlock.
2016-06-28 NIIBE Yutaka <gniibe@fsij.org>
* chopstx.h (struct chx_poll_head): Declare here.

View File

@@ -1880,10 +1880,20 @@ chopstx_setpriority (chopstx_prio_t prio)
{
struct chx_thread *tp = running;
tp->prio_orig = prio;
if (prio >= CHOPSTX_PRIO_INHIBIT_PREEMPTION)
chx_cpu_sched_lock ();
tp->prio = prio;
if (tp->prio < CHOPSTX_PRIO_INHIBIT_PREEMPTION
&& prio >= CHOPSTX_PRIO_INHIBIT_PREEMPTION)
{
chx_cpu_sched_lock ();
tp->prio = tp->prio_orig = prio;
}
else if (tp->prio >= CHOPSTX_PRIO_INHIBIT_PREEMPTION
&& prio < CHOPSTX_PRIO_INHIBIT_PREEMPTION)
{
tp->prio = tp->prio_orig = prio;
chx_cpu_sched_unlock ();
}
else
tp->prio = tp->prio_orig = prio;
}
/*