code: func setupEpoll() {
  	var err error
  	epollFD, err = syscall.EpollCreate1(0)
  	if err != nil {
  		fmt.Println("Unable to create epoll FD: ", err.Error())
  		os.Exit(1)
  	}
  
  	go func() {
  
  		var epollEvents [GPIOCount]syscall.EpollEvent
  
  		for {
  			numEvents, err := syscall.EpollWait(epollFD, epollEvents[:], -1)
  			if err != nil {
  				if err == syscall.EAGAIN {
  					continue
  				}
  				panic(fmt.Sprintf("EpollWait error: %v", err))
  			}
  			for i := 0; i < numEvents; i++ {
  				if eventPin, exists := watchEventCallbacks[int(epollEvents[i].Fd)]; exists {
  					if eventPin.initial {
  						eventPin.initial = false
  					} else {
  						eventPin.callback()
  					}
  				}
  			}
  		}
  
  	}()
  
  }
docs: // setupEpoll sets up epoll for use