diff --git a/include/re_sys.h b/include/re_sys.h index ac5377a..68cc56b 100644 --- a/include/re_sys.h +++ b/include/re_sys.h @@ -57,6 +57,12 @@ const char *sys_os_get(void); const char *sys_libre_version_get(void); int sys_coredump_set(bool enable); int sys_daemon(void); +void sys_usleep(unsigned int us); + +static inline void sys_msleep(unsigned int ms) +{ + sys_usleep(ms * 1000); +} uint16_t sys_htols(uint16_t v); diff --git a/mk/symbian/re.mmp b/mk/symbian/re.mmp index a7aa663..0cbf504 100644 --- a/mk/symbian/re.mmp +++ b/mk/symbian/re.mmp @@ -120,6 +120,7 @@ SOURCE daemon.c SOURCE endian.c SOURCE rand.c SOURCE sys.c +SOURCE symbian\sleep.cpp SOURCEPATH ..\..\src\telev SOURCE telev.c diff --git a/src/sys/mod.mk b/src/sys/mod.mk index fb29ad0..e005b45 100644 --- a/src/sys/mod.mk +++ b/src/sys/mod.mk @@ -7,4 +7,5 @@ SRCS += sys/daemon.c SRCS += sys/endian.c SRCS += sys/rand.c +SRCS += sys/sleep.c SRCS += sys/sys.c diff --git a/src/sys/sleep.c b/src/sys/sleep.c new file mode 100644 index 0000000..33cdc08 --- /dev/null +++ b/src/sys/sleep.c @@ -0,0 +1,45 @@ +/** + * @file sleep.c System sleep functions + * + * Copyright (C) 2010 Creytiv.com + */ +#include +#include +#include +#ifdef WIN32 +#include +#endif +#ifdef HAVE_UNISTD_H +#define _BSD_SOURCE 1 +#include +#endif +#ifdef HAVE_SELECT_H +#include +#endif + + +/** + * Blocking sleep for [us] number of microseconds + * + * @param us Number of microseconds to sleep + */ +void sys_usleep(unsigned int us) +{ + if (!us) + return; + +#ifdef WIN32 + Sleep(us / 1000); +#elif defined(HAVE_SELECT) + do { + struct timeval tv; + + tv.tv_sec = us / 1000000; + tv.tv_usec = us % 1000000; + + (void)select(0, NULL, NULL, NULL, &tv); + } while (0); +#else + (void)usleep(us); +#endif +} diff --git a/src/sys/symbian/sleep.cpp b/src/sys/symbian/sleep.cpp new file mode 100644 index 0000000..4fd20bf --- /dev/null +++ b/src/sys/symbian/sleep.cpp @@ -0,0 +1,18 @@ +/** + * @file sleep.cpp System sleep for Symbian + * + * Copyright (C) 2010 Creytiv.com + */ + +#include + +extern "C" { +#include +#include +} + + +void sys_usleep(unsigned int us) +{ + User::After(us); +}