#include "db_config.h"
#ifndef lint
static const char revid[] = "$Id: os_sleep.c,v 1.2 2004/03/30 01:23:46 jtownsen Exp $";
#endif
#ifndef NO_SYSTEM_INCLUDES
#include <sys/types.h>
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
#endif
#ifdef HAVE_VXWORKS
#include <sys/times.h>
#include <time.h>
#include <selectLib.h>
#else
#if TIME_WITH_SYS_TIME
#include <sys/time.h>
#include <time.h>
#else
#if HAVE_SYS_TIME_H
#include <sys/time.h>
#else
#include <time.h>
#endif
#endif
#endif
#include <string.h>
#include <unistd.h>
#endif
#include "db_int.h"
int
__os_sleep(dbenv, secs, usecs)
DB_ENV *dbenv;
u_long secs, usecs;
{
struct timeval t;
int ret;
for (; usecs >= 1000000; usecs -= 1000000)
++secs;
if (DB_GLOBAL(j_sleep) != NULL)
return (DB_GLOBAL(j_sleep)(secs, usecs));
t.tv_sec = secs;
if (secs == 0 && usecs == 0)
t.tv_usec = 1;
else
t.tv_usec = usecs;
if ((ret = select(0, NULL, NULL, NULL, &t)) != 0)
if ((ret = __os_get_errno()) == EINTR)
ret = 0;
if (ret != 0)
__db_err(dbenv, "select: %s", strerror(ret));
return (ret);
}