if (timeout != NULL) TIMEVAL_TO_TIMESPEC (&tval, timeout);
__sigprocmask (SIG_SETMASK, &savemask, NULL);
__pselect (nfds, readfds, writefds, exceptfds, timeout)     int nfds;     fd_set *readfds;     fd_set *writefds;     fd_set *exceptfds;     struct timespec *timeout;{  struct timeval tval;  int retval;  /* Change nanosecond number to microseconds.  This may loose     precision and therefore the `pselect` should be available.  But     for now it is hardly found.  */  if (timeout != NULL)    TIMESPEC_TO_TIMEVAL (&tval, timeout);  retval = __select (nfds, readfds, writefds, exceptfds,		     timeout != NULL ? &tval : NULL);  /* Change the result back.  The remaining time must be made     available to the caller.  */  if (timeout != NULL)    TIMEVAL_TO_TIMESPEC (&tval, timeout);  return retval;}