text: 
  #ifndef EPOLL_H_
  #define EPOLL_H_
  
  #include <WinSock2.h>
  #include <Windows.h>
  #include <stdint.h>
  
  #define EPOLLIN 0x001
  // #define EPOLLPRI 0x002
  #define EPOLLOUT 0x004
  #define EPOLLERR 0x008
  #define EPOLLHUP 0x010
  #define EPOLLRDNORM 0x040
  #define EPOLLRDBAND 0x080
  #define EPOLLWRNORM 0x100
  // #define EPOLLMSG 0x400
  #define EPOLLWRBAND 0x200
  #define EPOLLRDHUP 0x2000
  
  /* #define EPOLLET (1 << 30) Not supported */
  // #define EPOLLONESHOT (1 << 31)
  
  #define EPOLL_CTL_ADD 1
  #define EPOLL_CTL_MOD 2
  #define EPOLL_CTL_DEL 3
  
  typedef void *epoll_t;
  
  typedef union epoll_data {
      void *ptr;
      int fd;
      uint32_t u32;
      uint64_t u64;
      // /* Windows-specific extensions. */
      // SOCKET sock;
      // HANDLE hnd;
  } epoll_data_t;
  
  struct epoll_event
  {
      uint32_t events;   /* Epoll events */
      epoll_data_t data; /* User data variable */
  };
  
  epoll_t epoll_create(int);
  
  int epoll_close(epoll_t epoll_hnd);
  
  int epoll_ctl(epoll_t epoll_hnd, int op, SOCKET sock, struct epoll_event *event);
  
  int epoll_wait(epoll_t epoll_hnd, struct epoll_event *events, int maxevents, int timeout);
  
  #endif /* EPOLL_H_ */