From 67b38d1aad8877445d1e72e7db37896e0ba66321 Mon Sep 17 00:00:00 2001 From: Rbb666 Date: Wed, 5 Jul 2023 19:30:08 +0800 Subject: [PATCH] =?UTF-8?q?[kernel]=E6=94=AF=E6=8C=81=E5=A4=9A=E4=B8=AA?= =?UTF-8?q?=E7=BA=BF=E7=A8=8B=E6=8E=A5=E6=94=B6=E5=90=8C=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ipc.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/ipc.c b/src/ipc.c index d97fa1d35a..b6bf08770d 100644 --- a/src/ipc.c +++ b/src/ipc.c @@ -1770,6 +1770,7 @@ rt_err_t rt_event_send(rt_event_t event, rt_uint32_t set) rt_base_t level; rt_base_t status; rt_bool_t need_schedule; + rt_uint32_t need_clear_set = 0; /* parameter check */ RT_ASSERT(event != RT_NULL); @@ -1833,7 +1834,7 @@ rt_err_t rt_event_send(rt_event_t event, rt_uint32_t set) { /* clear event */ if (thread->event_info & RT_EVENT_FLAG_CLEAR) - event->set &= ~thread->event_set; + need_clear_set |= thread->event_set; /* resume thread, and thread list breaks out */ rt_thread_resume(thread); @@ -1843,6 +1844,10 @@ rt_err_t rt_event_send(rt_event_t event, rt_uint32_t set) need_schedule = RT_TRUE; } } + if (need_clear_set) + { + event->set &= ~need_clear_set; + } } /* enable interrupt */