sched_wakeup_thread(): memory barrier after status update

This commit is contained in:
Balazs Gerofi
2016-12-31 10:44:13 +09:00
parent 393cec513c
commit 21df56b233
2 changed files with 2 additions and 0 deletions

View File

@ -677,6 +677,7 @@ static uint64_t futex_wait_queue_me(struct futex_hash_bucket *hb, struct futex_q
* access to the hash list and forcing another memory barrier.
*/
xchg4(&(cpu_local_var(current)->status), PS_INTERRUPTIBLE);
barrier();
queue_me(q, hb);
if (!plist_node_empty(&q->list)) {

View File

@ -2861,6 +2861,7 @@ sched_wakeup_thread(struct thread *thread, int valid_states)
proc->status = PS_RUNNING;
mcs_rwlock_writer_unlock_noirq(&proc->update_lock, &updatelock);
xchg4((int *)(&thread->status), PS_RUNNING);
barrier();
status = 0;
}
else {