From: Russ Cox Date: Sun, 3 Aug 2008 05:34:04 +0000 (-0700) Subject: slightly gratuitous reorg of scheduler code X-Git-Tag: weekly.2009-11-06~3385 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=4feda71b7d2ed4c39655d5ba693d7a90e9aa8f49;p=gostls13.git slightly gratuitous reorg of scheduler code * 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 --- diff --git a/src/runtime/proc.c b/src/runtime/proc.c index bef497c9a7..232ee1b03c 100644 --- a/src/runtime/proc.c +++ b/src/runtime/proc.c @@ -90,7 +90,7 @@ tracebackothers(G *me) } G* -select(void) +nextgoroutine(void) { G *gp; @@ -114,34 +114,36 @@ select(void) } 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.