aboutsummaryrefslogtreecommitdiff
path: root/extmod/utime_mphal.c
diff options
context:
space:
mode:
authorPaul Sokolovsky2016-10-29 13:42:36 +0300
committerPaul Sokolovsky2016-10-29 13:42:36 +0300
commit6a87084019e3e78eda0a21a3c80d600d0bd21991 (patch)
tree221b5e30bb18586af7f6faee4a6581f7663b0bf0 /extmod/utime_mphal.c
parent99ed0f25cb1dded94d0774ee3bdb3c08062df51a (diff)
extmod/utime_mphal: Add MP_THREAD_GIL_EXIT/ENTER warppers for sleep functions.
Ported from unix port.
Diffstat (limited to 'extmod/utime_mphal.c')
-rw-r--r--extmod/utime_mphal.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/extmod/utime_mphal.c b/extmod/utime_mphal.c
index 4a03bf94b..9bdf84188 100644
--- a/extmod/utime_mphal.c
+++ b/extmod/utime_mphal.c
@@ -33,14 +33,17 @@
#include "py/obj.h"
#include "py/mphal.h"
#include "py/smallint.h"
+#include "py/runtime.h"
#include "extmod/utime_mphal.h"
STATIC mp_obj_t time_sleep(mp_obj_t seconds_o) {
+ MP_THREAD_GIL_EXIT();
#if MICROPY_PY_BUILTINS_FLOAT
mp_hal_delay_ms(1000 * mp_obj_get_float(seconds_o));
#else
mp_hal_delay_ms(1000 * mp_obj_get_int(seconds_o));
#endif
+ MP_THREAD_GIL_ENTER();
return mp_const_none;
}
MP_DEFINE_CONST_FUN_OBJ_1(mp_utime_sleep_obj, time_sleep);
@@ -48,7 +51,9 @@ MP_DEFINE_CONST_FUN_OBJ_1(mp_utime_sleep_obj, time_sleep);
STATIC mp_obj_t time_sleep_ms(mp_obj_t arg) {
mp_int_t ms = mp_obj_get_int(arg);
if (ms > 0) {
+ MP_THREAD_GIL_EXIT();
mp_hal_delay_ms(ms);
+ MP_THREAD_GIL_ENTER();
}
return mp_const_none;
}
@@ -57,7 +62,9 @@ MP_DEFINE_CONST_FUN_OBJ_1(mp_utime_sleep_ms_obj, time_sleep_ms);
STATIC mp_obj_t time_sleep_us(mp_obj_t arg) {
mp_int_t us = mp_obj_get_int(arg);
if (us > 0) {
+ MP_THREAD_GIL_EXIT();
mp_hal_delay_us(us);
+ MP_THREAD_GIL_ENTER();
}
return mp_const_none;
}