code: func (ec *EpollConsole) Shutdown(close func(int) error) error {
  	ec.readc.L.Lock()
  	defer ec.readc.L.Unlock()
  	ec.writec.L.Lock()
  	defer ec.writec.L.Unlock()
  
  	ec.readc.Broadcast()
  	ec.writec.Broadcast()
  	ec.closed = true
  	return close(ec.sysfd)
  }
docs: // Shutdown closes the file descriptor and signals call waiters for this fd.
  // It accepts a callback which will be called with the console's fd. The
  // callback typically will be used to do further cleanup such as unregister the
  // console's fd from the epoll interface.
  // User should call Shutdown and wait for all I/O operation to be finished
  // before closing the console.