summaryrefslogtreecommitdiffhomepage
path: root/pkg/fdnotifier/poll_unsafe.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/fdnotifier/poll_unsafe.go')
-rw-r--r--pkg/fdnotifier/poll_unsafe.go25
1 files changed, 25 insertions, 0 deletions
diff --git a/pkg/fdnotifier/poll_unsafe.go b/pkg/fdnotifier/poll_unsafe.go
index bc5e0ac44..882e9010d 100644
--- a/pkg/fdnotifier/poll_unsafe.go
+++ b/pkg/fdnotifier/poll_unsafe.go
@@ -74,3 +74,28 @@ func epollWait(epfd int, events []syscall.EpollEvent, msec int) (int, error) {
}
return int(r), nil
}
+
+func eventFDCreate() (int, error) {
+ eventFD, _, err := syscall.RawSyscall(syscall.SYS_EVENTFD2, 0, 0, 0)
+ if err != 0 {
+ return -1, err
+ }
+ return int(eventFD), nil
+}
+
+func eventFDWrite(eventFD int, v uint64) error {
+ if _, _, err := syscall.RawSyscall(syscall.SYS_WRITE, uintptr(eventFD), uintptr(unsafe.Pointer(&v)), 8); err != 0 {
+ return err
+ }
+
+ return nil
+}
+
+func eventFDRead(eventFD int) (uint64, error) {
+ var v uint64
+ if _, _, err := syscall.RawSyscall(syscall.SYS_READ, uintptr(eventFD), uintptr(unsafe.Pointer(&v)), 8); err != 0 {
+ return 0, err
+ }
+
+ return v, nil
+}