int link_usleep(struct link *link, int usec, int reading, int writing) { struct timeval tm; tm.tv_sec = 0; tm.tv_usec = usec; return link_internal_sleep(link, &tm, reading, writing); }
int link_usleep_mask(struct link *link, int usec, sigset_t *mask, int reading, int writing) { struct timeval tm; sigset_t emptymask; tm.tv_sec = 0; tm.tv_usec = usec; if(!mask) { sigemptyset(&emptymask); mask = &emptymask; } return link_internal_sleep(link, &tm, mask, reading, writing); }
int link_sleep(struct link *link, time_t stoptime, int reading, int writing) { struct timeval tm, *tptr; if(stoptime == LINK_FOREVER) { tptr = 0; } else { time_t timeout = stoptime - time(0); if(timeout <= 0) { errno = ECONNRESET; return 0; } tm.tv_sec = timeout; tm.tv_usec = 0; tptr = &tm; } return link_internal_sleep(link, tptr, NULL, reading, writing); }