aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/runtime/scheduler_any.go
blob: 39bbeb1e41c7751d7feff35e493aeac8e9a8a808 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//go:build !scheduler.none
// +build !scheduler.none

package runtime

import "internal/task"

// Pause the current task for a given time.
//
//go:linkname sleep time.Sleep
func sleep(duration int64) {
	if duration <= 0 {
		return
	}

	addSleepTask(task.Current(), nanosecondsToTicks(duration))
	task.Pause()
}

// run is called by the program entry point to execute the go program.
// With a scheduler, init and the main function are invoked in a goroutine before starting the scheduler.
func run() {
	initHeap()
	go func() {
		initAll()
		callMain()
		schedulerDone = true
	}()
	scheduler()
}

const hasScheduler = true