/*
* Copyright (c) 2006 Sendmail, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
* forth in the LICENSE file which can be found at the top level of
* the sendmail distribution.
*/
#include "sm/generic.h"
SM_RCSID("@(#)$Id: us_sleep.c,v 1.3 2006/11/18 15:19:42 ca Exp $")
#include "sm/assert.h"
#include "sm/error.h"
#include "sm/misc.h"
/*
** SM_US_SLEEP -- sleep() for some microseconds
**
** Parameters:
** us -- microseconds to sleep
**
** Returns:
** usual return code
*/
sm_ret_T
sm_us_sleep(long us)
{
int r;
#if HAVE_NANOSLEEP
struct timespec sl_ts;
sl_ts.tv_sec = 0;
sl_ts.tv_nsec = us * 100;
r = nanosleep(&sl_ts, NULL);
#elif HAVE_SELECT
struct timeval sl_tv;
sl_tv.tv_sec = 0;
sl_tv.tv_usec = us;
r = select(0, NULL, NULL, NULL, &sl_tv);
#else
#ifdef ENOIMPL
r = sm_err_perm(ENOIMPL);
#else
r = sm_err_perm(ENOSYS);
#endif
#endif
return r;
}
syntax highlighted by Code2HTML, v. 0.9.1