summaryrefslogtreecommitdiff
path: root/inotify/syscall.go
diff options
context:
space:
mode:
Diffstat (limited to 'inotify/syscall.go')
-rw-r--r--inotify/syscall.go21
1 files changed, 21 insertions, 0 deletions
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
+}