github usbarmory/tamago v1.25.1

latest releases: v1.26.4, latest, v1.26.3...
10 months ago

This release introduces improved CPU idle management support functions for amd64, enabling the following pattern on single-core CPUs:

if cpu.NumCPU() == 1 {
    runtime.Idle = func(pollUntil int64) {
        if pollUntil == 0 {
            return
        }

        cpu.SetAlarm(pollUntil)
        cpu.WaitInterrupt()
        cpu.SetAlarm(0)
    }
}

Major changes for tamago package API:

  • amd64: (*CPU).WaitInterrupt new function to suspend execution until an interrupt is received
  • amd64: (*CPU).SetAlarm: new function to set LAPIC LVT Timer in TSC-Deadline mode
  • amd64: (*CPU).Features.TSCDeadline: new boolean for TSC-Deadline mode detection
  • amd64: (*CPU).Halt: function removed in favor of race-free (*CPU).WaitInterrupt
  • amd64: (*CPU).Halt: function removed in favor of existing (*CPU).WaitInterrupt
  • user/linux: added experimental support for GOARCH=arm64 and README file

Major changes for tamago package internals:

  • amd64: IRQ_WAKEUP (255) is now allocated to (*CPU).SetAlarm and not passed to application ISR
  • amd64: LAPIC and interrupts now enabled on supplemental cores (APs)
  • amd64: IRQ handling is improved in terms of performance and race condition protection

Full Changelog: v1.25.0...v1.25.1

This release requires GOOS=tamago support in the Go distribution, it requires at least tamago-go1.25.0. The experimental user/linux package support for GOARCH=arm64 requires usbarmory/tamago-go@255baf0.

Don't miss a new tamago release

NewReleases is sending notifications on new releases.