runtime: Use atomic load for in entersyscall.
Reportedly fixes PPC64 deadlock. From a comment by Gabriel Russell. Fixes golang/go#15051. Reviewed-on: https://go-review.googlesource.com/21450 From-SVN: r234694
This commit is contained in:
parent
2e816b993d
commit
bb72703282
|
@ -1,4 +1,4 @@
|
||||||
3de822d11255d439fac9717897b017aae2de18c2
|
8edf085a94579bd819a10f50328233812ceeb950
|
||||||
|
|
||||||
The first line of this file holds the git revision number of the last
|
The first line of this file holds the git revision number of the last
|
||||||
merge done from the gofrontend repository.
|
merge done from the gofrontend repository.
|
||||||
|
|
|
@ -2042,7 +2042,7 @@ doentersyscall()
|
||||||
m->mcache = nil;
|
m->mcache = nil;
|
||||||
m->p->m = nil;
|
m->p->m = nil;
|
||||||
runtime_atomicstore(&m->p->status, Psyscall);
|
runtime_atomicstore(&m->p->status, Psyscall);
|
||||||
if(runtime_sched.gcwaiting) {
|
if(runtime_atomicload(&runtime_sched.gcwaiting)) {
|
||||||
runtime_lock(&runtime_sched);
|
runtime_lock(&runtime_sched);
|
||||||
if (runtime_sched.stopwait > 0 && runtime_cas(&m->p->status, Psyscall, Pgcstop)) {
|
if (runtime_sched.stopwait > 0 && runtime_cas(&m->p->status, Psyscall, Pgcstop)) {
|
||||||
if(--runtime_sched.stopwait == 0)
|
if(--runtime_sched.stopwait == 0)
|
||||||
|
|
Loading…
Reference in New Issue