Переглянути джерело

fix在rt_event_recv函数中,如果事件已经满足无需阻塞的情况下,没有给thread->event_set/event_info赋值的问题

Meco 5 роки тому
батько
коміт
1fe077a0be
1 змінених файлів з 7 додано та 1 видалено
  1. 7 1
      src/ipc.c

+ 7 - 1
src/ipc.c

@@ -34,6 +34,8 @@
  * 2013-09-14     Grissiom     add an option check in rt_event_recv
  * 2013-09-14     Grissiom     add an option check in rt_event_recv
  * 2018-10-02     Bernard      add 64bit support for mailbox
  * 2018-10-02     Bernard      add 64bit support for mailbox
  * 2019-09-16     tyx          add send wait support for message queue
  * 2019-09-16     tyx          add send wait support for message queue
+ * 2020-07-29     Meco Man     fix thread->event_set/event_info when received an 
+                               event without pending
  */
  */
 
 
 #include <rtthread.h>
 #include <rtthread.h>
@@ -1177,7 +1179,11 @@ rt_err_t rt_event_recv(rt_event_t   event,
         /* set received event */
         /* set received event */
         if (recved)
         if (recved)
             *recved = (event->set & set);
             *recved = (event->set & set);
-
+            
+        /* fill thread event info */            
+        thread->event_set = (event->set & set);
+        thread->event_info = option;
+        
         /* received event */
         /* received event */
         if (option & RT_EVENT_FLAG_CLEAR)
         if (option & RT_EVENT_FLAG_CLEAR)
             event->set &= ~set;
             event->set &= ~set;