mirror of https://github.com/kubernetes/kops.git
33 lines
630 B
Go
33 lines
630 B
Go
// +build linux darwin
|
|
|
|
package tpmutil
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"golang.org/x/sys/unix"
|
|
)
|
|
|
|
// poll blocks until the file descriptor is ready for reading or an error occurs.
|
|
func poll(f *os.File) error {
|
|
var (
|
|
fds = []unix.PollFd{{
|
|
Fd: int32(f.Fd()),
|
|
Events: 0x1, // POLLIN
|
|
}}
|
|
timeout = -1 // Indefinite timeout
|
|
)
|
|
|
|
if _, err := unix.Poll(fds, timeout); err != nil {
|
|
return err
|
|
}
|
|
|
|
// Revents is filled in by the kernel.
|
|
// If the expected event happened, Revents should match Events.
|
|
if fds[0].Revents != fds[0].Events {
|
|
return fmt.Errorf("unexpected poll Revents 0x%x", fds[0].Revents)
|
|
}
|
|
return nil
|
|
}
|