diff options
Diffstat (limited to 'pkg/fdnotifier/poll_unsafe.go')
-rw-r--r-- | pkg/fdnotifier/poll_unsafe.go | 25 |
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 +} |