From 435f03d237e4c6ec08c7b1a5497b37b92e103e71 Mon Sep 17 00:00:00 2001 From: Lei Jitang Date: Fri, 26 May 2017 13:22:45 -0400 Subject: [PATCH] Remove C implementation of epoll on arm64 `"golang.org/x/sys/unix"` support epoll on arm64 with https://github.com/golang/sys/commit/324e1375807370c3934e14f3a97e7d160832f6b4 There is no need a C implementation of epoll on arm64. Signed-off-by: Lei Jitang --- sys/epoll.go | 2 +- sys/epoll_arm64.go | 74 ---------------------------------------------- 2 files changed, 1 insertion(+), 75 deletions(-) delete mode 100644 sys/epoll_arm64.go diff --git a/sys/epoll.go b/sys/epoll.go index 13c30c034..3a4d97cfa 100644 --- a/sys/epoll.go +++ b/sys/epoll.go @@ -1,4 +1,4 @@ -// +build linux,!arm64 +// +build linux package sys diff --git a/sys/epoll_arm64.go b/sys/epoll_arm64.go deleted file mode 100644 index cc501a5f4..000000000 --- a/sys/epoll_arm64.go +++ /dev/null @@ -1,74 +0,0 @@ -// +build linux,arm64 - -package sys - -// #include -/* -int EpollCreate1(int flag) { - return epoll_create1(flag); -} - -int EpollCtl(int efd, int op,int sfd, int events, int fd) { - struct epoll_event event; - event.events = events; - event.data.fd = fd; - - return epoll_ctl(efd, op, sfd, &event); -} - -struct event_t { - uint32_t events; - int fd; -}; - -struct epoll_event events[128]; -int run_epoll_wait(int fd, struct event_t *event) { - int n, i; - n = epoll_wait(fd, events, 128, -1); - for (i = 0; i < n; i++) { - event[i].events = events[i].events; - event[i].fd = events[i].data.fd; - } - return n; -} -*/ -import "C" - -import ( - "fmt" - "unsafe" - - "golang.org/x/sys/unix" -) - -// EpollCreate1 calls a C implementation -func EpollCreate1(flag int) (int, error) { - fd := int(C.EpollCreate1(C.int(flag))) - if fd < 0 { - return fd, fmt.Errorf("failed to create epoll, errno is %d", fd) - } - return fd, nil -} - -// EpollCtl calls a C implementation -func EpollCtl(epfd int, op int, fd int, event *unix.EpollEvent) error { - errno := C.EpollCtl(C.int(epfd), C.int(unix.EPOLL_CTL_ADD), C.int(fd), C.int(event.Events), C.int(event.Fd)) - if errno < 0 { - return fmt.Errorf("Failed to ctl epoll") - } - return nil -} - -// EpollWait calls a C implementation -func EpollWait(epfd int, events []unix.EpollEvent, msec int) (int, error) { - var c_events [128]C.struct_event_t - n := int(C.run_epoll_wait(C.int(epfd), (*C.struct_event_t)(unsafe.Pointer(&c_events)))) - if n < 0 { - return int(n), fmt.Errorf("Failed to wait epoll") - } - for i := 0; i < n; i++ { - events[i].Fd = int32(c_events[i].fd) - events[i].Events = uint32(c_events[i].events) - } - return int(n), nil -}