* rename select (very loaded word) nextgoroutine
* separate out "enter scheduler" (sys·gosched)
from the scheduler itself (scheduler)
R=r
APPROVED=r
DELTA=36 (17 added, 15 deleted, 4 changed)
OCL=13772
CL=13774
}
G*
-select(void)
+nextgoroutine(void)
{
G *gp;
}
void
-gom0init(void)
-{
- gosave(&m->sched);
- sys·gosched();
-}
-
-void
-sys·gosched(void)
+scheduler(void)
{
G* gp;
-
- if(g != m->g0) {
- if(gosave(&g->sched))
- return;
- g = m->g0;
- gogo(&m->sched);
- }
- gp = select();
+
+ gosave(&m->sched);
+ gp = nextgoroutine();
if(gp == nil) {
// prints("sched: no more work\n");
sys·exit(0);
}
-
m->curg = gp;
g = gp;
gogo(&gp->sched);
}
+void
+gom0init(void)
+{
+ scheduler();
+}
+
+void
+sys·gosched(void)
+{
+ if(gosave(&g->sched))
+ return;
+ g = m->g0;
+ gogo(&m->sched);
+}
+
//
// the calling sequence for a routine that
// needs N bytes stack, A args.