summaryrefslogtreecommitdiff
path: root/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_windows.go
blob: eb38ea5afa926d415ffd743fb8b5b129bcd4e133 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package sysfs

import (
	"io/fs"
	"syscall"

	"github.com/tetratelabs/wazero/experimental/sys"
)

func setNonblock(fd uintptr, enable bool) sys.Errno {
	// We invoke the syscall, but this is currently no-op.
	return sys.UnwrapOSError(syscall.SetNonblock(syscall.Handle(fd), enable))
}

func isNonblock(f *osFile) bool {
	// On Windows, we support non-blocking reads only on named pipes.
	isValid := false
	st, errno := f.Stat()
	if errno == 0 {
		isValid = st.Mode&fs.ModeNamedPipe != 0
	}
	return isValid && f.flag&sys.O_NONBLOCK == sys.O_NONBLOCK
}