diff --git a/configure b/configure
index 7441f0f308..a9237a4f53 100755
--- a/configure
+++ b/configure
@@ -20843,7 +20843,8 @@ done
 
 
 
-for ac_func in gethostname vasprintf mmap mlock mlockall
+
+for ac_func in gethostname vasprintf mmap mlock mlockall usleep
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
 echo "$as_me:$LINENO: checking for $ac_func" >&5
diff --git a/configure.in b/configure.in
index de16318384..cc79af2941 100644
--- a/configure.in
+++ b/configure.in
@@ -34,7 +34,7 @@ AC_PROG_GCC_TRADITIONAL
 AC_FUNC_MALLOC
 AC_TYPE_SIGNAL
 AC_FUNC_STRFTIME
-AC_CHECK_FUNCS([gethostname vasprintf mmap mlock mlockall])
+AC_CHECK_FUNCS([gethostname vasprintf mmap mlock mlockall usleep])
 
 AC_C_BIGENDIAN(AC_DEFINE([__BYTE_ORDER],__BIG_ENDIAN,[Big Endian]),AC_DEFINE([__BYTE_ORDER],__LITTLE_ENDIAN,[Little Endian]))
 AC_DEFINE([__LITTLE_ENDIAN],1234,[for the places where it is not defined])
diff --git a/src/include/switch_am_config.h.in b/src/include/switch_am_config.h.in
index ec727f3f72..c2a949cebe 100644
--- a/src/include/switch_am_config.h.in
+++ b/src/include/switch_am_config.h.in
@@ -64,6 +64,9 @@
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
+/* Define to 1 if you have the `usleep' function. */
+#undef HAVE_USLEEP
+
 /* Define to 1 if you have the `vasprintf' function. */
 #undef HAVE_VASPRINTF
 
diff --git a/src/include/switch_utils.h b/src/include/switch_utils.h
index ca916d275b..dd6957df34 100644
--- a/src/include/switch_utils.h
+++ b/src/include/switch_utils.h
@@ -166,7 +166,11 @@ switch_mutex_unlock(obj->flag_mutex);
 /*!
   \brief Wait a desired number of microseconds and yield the CPU
 */
+#ifdef HAVE_USLEEP
+#define switch_yield(ms) usleep(ms);
+#else
 #define switch_yield(ms) apr_sleep(ms * 10); //apr_thread_yield();
+#endif
 
 /*!
   \brief Declares a function designed to set a dymaic global string