LGTM=rlh, khr
R=golang-codereviews, rlh, bradfitz, khr
CC=golang-codereviews, rsc
https://golang.org/cl/
127490043
*/
package runtime
-// Gosched yields the processor, allowing other goroutines to run. It does not
-// suspend the current goroutine, so execution resumes automatically.
-func Gosched()
-
// Goexit terminates the goroutine that calls it. No other goroutine is affected.
// Goexit runs all deferred calls before terminating the goroutine.
//
void
runtime·gosched(void)
{
- if(g->status != Grunning)
- runtime·throw("bad g status");
- runtime·mcall(runtime·gosched0);
+ runtime·mcall(runtime·gosched_m);
}
// runtime·gosched continuation on g0.
void
-runtime·gosched0(G *gp)
+runtime·gosched_m(G *gp)
{
+ if(gp->status != Grunning)
+ runtime·throw("bad g status");
gp->status = Grunnable;
dropg();
runtime·lock(&runtime·sched.lock);
runtime·breakpoint();
}
-void
-runtime·Gosched(void)
-{
- runtime·gosched();
-}
-
// Implementation of runtime.GOMAXPROCS.
// delete when scheduler is even stronger
int32
--- /dev/null
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package runtime
+
+// Gosched yields the processor, allowing other goroutines to run. It does not
+// suspend the current goroutine, so execution resumes automatically.
+func Gosched() {
+ mcall(&gosched_m)
+}
void runtime·exit(int32);
void runtime·breakpoint(void);
void runtime·gosched(void);
-void runtime·gosched0(G*);
+void runtime·gosched_m(G*);
void runtime·schedtrace(bool);
void runtime·park(bool(*)(G*, void*), void*, int8*);
void runtime·parkunlock(Lock*, int8*);
}
// Act like goroutine called runtime.Gosched.
gp->status = oldstatus;
- runtime·gosched0(gp); // never return
+ runtime·gosched_m(gp); // never return
}
// If every frame on the top segment is copyable, allocate a bigger segment
setFinalizer_m,
markallocated_m,
unrollgcprog_m,
- unrollgcproginplace_m mFunction
+ unrollgcproginplace_m,
+ gosched_m mFunction
)
// memclr clears n bytes starting at ptr.