void osip_usleep (int useconds) { #if defined(__PALMOS__) && (__PALMOS__ >= 0x06000000) /* This bit will work for the Protein API, but not the Palm 68K API */ nsecs_t nanoseconds = useconds * 1000; SysThreadDelay (nanoseconds, P_ABSOLUTE_TIMEOUT); #elif defined(__PALMOS__) && (__PALMOS__ < 0x06000000) UInt32 stoptime = TimGetTicks () + (useconds / 1000000) * SysTicksPerSecond (); while (stoptime > TimGetTicks ()) /* I wish there was some type of yield function here */ ; #elif defined(WIN32) Sleep (useconds / 1000); #else struct timeval delay; int sec; sec = (int) useconds / 1000000; if (sec > 0) { delay.tv_sec = sec; delay.tv_usec = 0; } else { delay.tv_sec = 0; delay.tv_usec = useconds; } select (0, 0, 0, 0, &delay); #endif }
void osip_usleep (int useconds) { #if defined(__PALMOS__) && (__PALMOS__ >= 0x06000000) /* This bit will work for the Protein API, but not the Palm 68K API */ nsecs_t nanoseconds = useconds * 1000; SysThreadDelay (nanoseconds, P_ABSOLUTE_TIMEOUT); #elif defined(__PALMOS__) && (__PALMOS__ < 0x06000000) UInt32 stoptime = TimGetTicks () + (useconds / 1000000) * SysTicksPerSecond (); while (stoptime > TimGetTicks ()) /* I wish there was some type of yield function here */ ; #elif defined(WIN32) Sleep (useconds / 1000); #elif defined(__rtems__) rtems_task_wake_after( RTEMS_MICROSECONDS_TO_TICKS(useconds) ); #elif defined(__arc__) struct timespec req; struct timespec rem; req.tv_sec = (int) useconds / 1000000; req.tv_nsec = (int) (useconds % 1000000)*1000; nanosleep (&req, &rem); #else struct timeval delay; int sec; sec = (int) useconds / 1000000; if (sec > 0) { delay.tv_sec = sec; delay.tv_usec = 0; } else { delay.tv_sec = 0; delay.tv_usec = useconds; } select (0, 0, 0, 0, &delay); #endif }