From 849eb835f013fccb31530881b8ffae36521bacc4 Mon Sep 17 00:00:00 2001
From: Damien George <damien.p.george@gmail.com>
Date: Thu, 26 May 2016 14:58:23 +0100
Subject: [PATCH] esp8266/ets_alt_task: Don't run ets_loop_iter if irqs are
 disabled.

ets_loop_iter processes pending tasks, and tasks are considered lower
priority than interrupts, so tasks shouldn't be processed if interrupts
are disabled.
---
 esp8266/ets_alt_task.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/esp8266/ets_alt_task.c b/esp8266/ets_alt_task.c
index 91623f06d..563aeb5ac 100644
--- a/esp8266/ets_alt_task.c
+++ b/esp8266/ets_alt_task.c
@@ -1,4 +1,5 @@
 #include <stdio.h>
+#include "xtirq.h"
 #include "osapi.h"
 #include "os_type.h"
 #include "ets_sys.h"
@@ -108,6 +109,9 @@ bool ets_post(uint8 prio, os_signal_t sig, os_param_t param) {
 }
 
 bool ets_loop_iter(void) {
+    if (query_irq() != 0) {
+        return false;
+    }
     //static unsigned cnt;
     bool progress = false;
     for (volatile struct task_entry *t = emu_tasks; t < &emu_tasks[MP_ARRAY_SIZE(emu_tasks)]; t++) {
-- 
GitLab