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
|
package testutils
import (
"runtime"
"testing"
"github.com/cilium/ebpf/internal/unix"
"github.com/go-quicktest/qt"
)
// LockOSThreadToSingleCPU force the current goroutine to run on a single CPU.
func LockOSThreadToSingleCPU(tb testing.TB) {
tb.Helper()
runtime.LockOSThread()
tb.Cleanup(runtime.UnlockOSThread)
var old unix.CPUSet
err := unix.SchedGetaffinity(0, &old)
qt.Assert(tb, qt.IsNil(err))
// Schedule test to run on only CPU 0
var first unix.CPUSet
first.Set(0)
err = unix.SchedSetaffinity(0, &first)
qt.Assert(tb, qt.IsNil(err))
tb.Cleanup(func() {
_ = unix.SchedSetaffinity(0, &old)
})
}
|