From fc5d64a5fc886e0b8519e8c19d311ebfb0df59db Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sun, 18 Dec 2016 15:51:39 -0500 Subject: add inotify.NewInotify --- inotify/syscall.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'inotify/syscall.go') diff --git a/inotify/syscall.go b/inotify/syscall.go index 0a0c2f0..33a10e2 100644 --- a/inotify/syscall.go +++ b/inotify/syscall.go @@ -73,3 +73,24 @@ func sys_read(fd inFd, p []byte) (int, error) { n, err := syscall.Read(int(fd), p) return n, os.NewSyscallError("read", err) } + +func sys_dupfd_cloexec(fd inFd) (inFd, error) { + n, _, errno := syscall.Syscall(syscall.SYS_FCNTL, uintptr(fd), syscall.F_DUPFD_CLOEXEC, 0) + if errno != 0 { + return -1, os.NewSyscallError("dupfd_cloexec", errno) + } + return inFd(n), nil +} + +func sys_setnonblock(fd inFd, nonblocking bool) error { + err := syscall.SetNonblock(int(fd), nonblocking) + return os.NewSyscallError("setnonblock", err) +} + +func sys_getnonblock(fd inFd) (bool, error) { + flag, _, errno := syscall.Syscall(syscall.SYS_FCNTL, uintptr(fd), syscall.F_GETFL, 0) + if errno != 0 { + return false, os.NewSyscallError("getnonblock", errno) + } + return flag & syscall.O_NONBLOCK != 0, nil +} -- cgit v1.2.3