         events = Selector.allocateEventsArray(capacity: eventsCapacity)
         self.lifecycleState = .closed
 
-#if os(Linux)
-        self.selectorFD = try Epoll.epoll_create(size: 128)
-        self.eventFD = try EventFd.eventfd(initval: 0, flags: Int32(EventFd.EFD_CLOEXEC | EventFd.EFD_NONBLOCK))
-        self.timerFD = try TimerFd.timerfd_create(clockId: CLOCK_MONOTONIC, flags: Int32(TimerFd.TFD_CLOEXEC | TimerFd.TFD_NONBLOCK))
-
-        self.lifecycleState = .open
-
-        var ev = Epoll.epoll_event()
-        ev.events = SelectorEventSet.read.epollEventSet
-        ev.data.fd = self.eventFD
-
-        try Epoll.epoll_ctl(epfd: self.selectorFD, op: Epoll.EPOLL_CTL_ADD, fd: self.eventFD, event: &ev)
-
-        var timerev = Epoll.epoll_event()
-        timerev.events = Epoll.EPOLLIN | Epoll.EPOLLERR | Epoll.EPOLLRDHUP
-        timerev.data.fd = self.timerFD
-        try Epoll.epoll_ctl(epfd: self.selectorFD, op: Epoll.EPOLL_CTL_ADD, fd: self.timerFD, event: &timerev)
-#else
+#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS)
         self.selectorFD = try KQueue.kqueue()
         self.lifecycleState = .open
 

internal class Selector<R: Registration> {
    private var lifecycleState: SelectorLifecycleState

    #if os(Linux)
    private typealias EventType = Epoll.epoll_event
    private var earliestTimer: NIODeadline = .distantFuture
    #else
    private typealias EventType = kevent
    #endif

    private var eventsCapacity = 64

            }
        }
        growEventArrayIfNeeded(ready: ready)
#endif
    }

