HASUMI Hitoshi
cfcd86fd9b
Fix mrb_task_run to prevent returning unexpectedly
...
Old code:
```c
t = q_ready_;
/* No task ready - check if all tasks are done */
if (!t) {
/* If there are tasks waiting or suspended, idle */
if (q_waiting_ || q_suspended_) {
mrb_hal_task_idle_cpu(mrb);
continue;
```
IRQ possibly happens between `t = q_ready_;` and `if (q_waiting_ || q_suspended_) {` and, for example, a waiting task may move to the ready queue.
As a result, the infinite loop in mrb_task_run unexpectedly breaks in spite of not all the task is dormant.
This patch fixes the issue above by setting the `exitting` condition with a critical section.
2026-02-13 13:34:54 +09:00
..
2025-10-16 09:59:03 +09:00
2026-01-25 15:46:56 +01:00
2026-01-02 18:28:31 +09:00
2026-01-14 14:56:50 +09:00
2025-10-16 16:54:25 +09:00
2026-01-25 16:04:23 +01:00
2025-10-25 21:05:39 +09:00
2025-10-16 17:02:23 +09:00
2026-01-24 11:32:57 +09:00
2025-12-11 18:09:09 +09:00
2026-01-24 11:34:02 +09:00
2025-12-11 18:09:10 +09:00
2025-12-28 20:28:00 +10:00
2026-01-04 19:52:11 +01:00
2025-12-11 18:09:10 +09:00
2025-12-21 17:26:49 +09:00
2025-12-11 18:09:10 +09:00
2025-11-12 10:25:36 +09:00
2025-08-14 10:52:47 +09:00
2025-10-14 08:22:41 +09:00
2025-10-08 23:55:23 +09:00
2025-08-14 10:52:49 +09:00
2026-01-13 16:12:17 +09:00
2025-12-11 18:09:08 +09:00
2025-08-14 10:52:49 +09:00
2025-11-08 14:27:44 +09:00
2025-12-23 10:41:21 +09:00
2025-12-11 18:09:06 +09:00
2025-12-11 18:09:09 +09:00
2025-12-11 18:09:09 +09:00
2025-12-11 18:09:07 +09:00
2025-10-27 07:59:20 +09:00
2025-11-08 14:26:49 +09:00
2026-01-24 11:34:02 +09:00
2025-08-14 10:52:49 +09:00
2025-10-18 23:34:10 +09:00
2025-12-11 18:09:09 +09:00
2026-01-08 08:23:51 +09:00
2025-11-12 10:25:37 +09:00
2025-10-26 23:30:14 +09:00
2025-11-29 01:46:54 +10:00
2025-12-11 18:09:10 +09:00
2025-12-30 16:25:49 +09:00
2025-12-11 18:09:07 +09:00
2025-08-14 10:52:49 +09:00
2025-06-24 13:56:07 +09:00
2026-01-12 03:00:53 +01:00
2025-11-08 14:24:40 +09:00
2025-10-26 20:33:06 +09:00
2025-12-29 12:54:32 +09:00
2025-11-29 01:46:54 +10:00
2026-01-12 19:23:15 +09:00
2026-01-17 13:00:45 +09:00
2026-01-02 18:28:31 +09:00
2025-12-11 18:09:11 +09:00
2025-12-29 11:56:58 +09:00
2026-01-08 08:23:51 +09:00
2026-01-01 10:23:21 +09:00
2025-12-11 18:09:09 +09:00
2025-08-14 10:52:49 +09:00
2026-02-13 13:34:54 +09:00
2025-11-16 06:53:02 +09:00
2024-09-24 00:14:24 +10:00
2026-01-05 12:35:09 +09:00
2025-08-14 10:52:47 +09:00
2021-01-06 18:10:21 +09:00
2021-01-06 18:10:21 +09:00
2023-04-04 19:31:42 +10:00
2025-10-08 23:55:21 +09:00
2025-05-14 15:58:23 +09:00
2025-05-14 15:58:24 +09:00
2022-11-29 15:58:05 +09:00
2025-01-06 13:57:23 +09:00
2025-05-19 08:00:36 +09:00