public int select(int nfds, FDSet rfds, FDSet wfds, FDSet efds, TimeVal timeout) {
    timeval tout = null;
    if (timeout != null) {
      tout = new timeval(timeout);
    }

    return m_ClibND.select(nfds, (fd_set) rfds, (fd_set) wfds, (fd_set) efds, tout);
  }
 public int poll(Pollfd fds[], int nfds, int timeout) {
   if (nfds <= 0 || nfds > fds.length) {
     throw new java.lang.IllegalArgumentException(
         "nfds " + nfds + " must be <= fds.length " + fds.length);
   }
   pollfd.ByReference parampfds = new pollfd.ByReference();
   pollfd[] pfds = (pollfd[]) parampfds.toArray(nfds);
   for (int i = 0; i < nfds; i++) {
     pfds[i].fd = fds[i].fd;
     pfds[i].events = fds[i].events;
   }
   int ret = m_ClibND.poll(parampfds, nfds, timeout);
   for (int i = 0; i < nfds; i++) {
     fds[i].revents = pfds[i].revents;
   }
   return ret;
 }