Commit 91740582 authored by Austin Clements's avatar Austin Clements

runtime: add 'next' flag to ready

Currently ready always puts the readied goroutine in runnext. We're
going to have to change this for some uses, so add a flag for whether
or not to use runnext.

For now we always pass true so this is a no-op change.

For #15706.

Change-Id: Iaa66d8355ccfe4bbe347570cc1b1878c70fa25df
Reviewed-on: https://go-review.googlesource.com/23171
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
parent 79ba1e44
...@@ -1704,7 +1704,7 @@ func gcSweep(mode gcMode) { ...@@ -1704,7 +1704,7 @@ func gcSweep(mode gcMode) {
lock(&sweep.lock) lock(&sweep.lock)
if sweep.parked { if sweep.parked {
sweep.parked = false sweep.parked = false
ready(sweep.g, 0) ready(sweep.g, 0, true)
} }
unlock(&sweep.lock) unlock(&sweep.lock)
mProf_GC() mProf_GC()
......
...@@ -601,7 +601,7 @@ func gcFlushBgCredit(scanWork int64) { ...@@ -601,7 +601,7 @@ func gcFlushBgCredit(scanWork int64) {
gp.gcAssistBytes = 0 gp.gcAssistBytes = 0
xgp := gp xgp := gp
gp = gp.schedlink.ptr() gp = gp.schedlink.ptr()
ready(xgp, 0) ready(xgp, 0, true)
} else { } else {
// Partially satisfy this assist. // Partially satisfy this assist.
gp.gcAssistBytes += scanBytes gp.gcAssistBytes += scanBytes
......
...@@ -273,7 +273,7 @@ func goparkunlock(lock *mutex, reason string, traceEv byte, traceskip int) { ...@@ -273,7 +273,7 @@ func goparkunlock(lock *mutex, reason string, traceEv byte, traceskip int) {
func goready(gp *g, traceskip int) { func goready(gp *g, traceskip int) {
systemstack(func() { systemstack(func() {
ready(gp, traceskip) ready(gp, traceskip, true)
}) })
} }
...@@ -533,7 +533,7 @@ func mcommoninit(mp *m) { ...@@ -533,7 +533,7 @@ func mcommoninit(mp *m) {
} }
// Mark gp ready to run. // Mark gp ready to run.
func ready(gp *g, traceskip int) { func ready(gp *g, traceskip int, next bool) {
if trace.enabled { if trace.enabled {
traceGoUnpark(gp, traceskip) traceGoUnpark(gp, traceskip)
} }
...@@ -550,7 +550,7 @@ func ready(gp *g, traceskip int) { ...@@ -550,7 +550,7 @@ func ready(gp *g, traceskip int) {
// status is Gwaiting or Gscanwaiting, make Grunnable and put on runq // status is Gwaiting or Gscanwaiting, make Grunnable and put on runq
casgstatus(gp, _Gwaiting, _Grunnable) casgstatus(gp, _Gwaiting, _Grunnable)
runqput(_g_.m.p.ptr(), gp, true) runqput(_g_.m.p.ptr(), gp, next)
if atomic.Load(&sched.npidle) != 0 && atomic.Load(&sched.nmspinning) == 0 { // TODO: fast atomic if atomic.Load(&sched.npidle) != 0 && atomic.Load(&sched.nmspinning) == 0 { // TODO: fast atomic
wakep() wakep()
} }
...@@ -1835,7 +1835,7 @@ top: ...@@ -1835,7 +1835,7 @@ top:
} }
if fingwait && fingwake { if fingwait && fingwake {
if gp := wakefing(); gp != nil { if gp := wakefing(); gp != nil {
ready(gp, 0) ready(gp, 0, true)
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment