mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-09-14 08:29:32 +00:00
60f8a62978
This commit adds support for a scheduler that runs a scheduler on all available cores. It is meant to be used on baremetal systems with a fixed number of cores, such as the RP2040. The initial implementation adds support for multicore scheduling to the riscv-qemu target as a convenient testing target. This means that this new multicore scheduler is tested in CI, including a bunch of standard library tests (`make tinygo-test-baremetal`). This should ensure the new scheduler is reasonably well tested before trying to use it on harder-to-debug targets like the RP2040.
14 lines
384 B
Go
14 lines
384 B
Go
//go:build scheduler.tasks
|
|
|
|
package runtime
|
|
|
|
var systemStack uintptr
|
|
|
|
// Implementation detail of the internal/task package.
|
|
// It needs to store the system stack pointer somewhere, and needs to know how
|
|
// many cores there are to do so. But it doesn't know the number of cores. Hence
|
|
// why this is implemented in the runtime.
|
|
func systemStackPtr() *uintptr {
|
|
return &systemStack
|
|
}
|