mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
platform/kvm: calll sigtimedwait with zero timeout
sigtimedwait is used to check pending signals and it should not block. PiperOrigin-RevId: 277777269
This commit is contained in:
@@ -80,13 +80,17 @@ func bluepillHandler(context unsafe.Pointer) {
|
||||
// interrupted KVM. Since we're in a signal handler
|
||||
// currently, all signals are masked and the signal
|
||||
// must have been delivered directly to this thread.
|
||||
timeout := syscall.Timespec{}
|
||||
sig, _, errno := syscall.RawSyscall6(
|
||||
syscall.SYS_RT_SIGTIMEDWAIT,
|
||||
uintptr(unsafe.Pointer(&bounceSignalMask)),
|
||||
0, // siginfo.
|
||||
0, // timeout.
|
||||
8, // sigset size.
|
||||
0, // siginfo.
|
||||
uintptr(unsafe.Pointer(&timeout)), // timeout.
|
||||
8, // sigset size.
|
||||
0, 0)
|
||||
if errno == syscall.EAGAIN {
|
||||
continue
|
||||
}
|
||||
if errno != 0 {
|
||||
throw("error waiting for pending signal")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user