Explorar el Código

rt_event_recv: add a check on the option flag

Either RT_EVENT_FLAG_AND or RT_EVENT_FLAG_OR should be set in the option
flag. If none of them is present, the waiting thread will never be
resumed.
Grissiom hace 12 años
padre
commit
c465bc2c2e
Se han modificado 1 ficheros con 8 adiciones y 1 borrados
  1. 8 1
      src/ipc.c

+ 8 - 1
src/ipc.c

@@ -45,6 +45,7 @@
  * 2010-10-26     yi.qiu       add module support in rt_mp_delete and rt_mq_delete
  * 2010-11-10     Bernard      add IPC reset command implementation.
  * 2011-12-18     Bernard      add more parameter checking in message queue
+ * 2013-09-14     Grissiom     add an option check in rt_event_recv
  */
 
 #include <rtthread.h>
@@ -1079,7 +1080,8 @@ RTM_EXPORT(rt_event_send);
  *
  * @param event the fast event object
  * @param set the interested event set
- * @param option the receive option
+ * @param option the receive option, either RT_EVENT_FLAG_AND or
+ *        RT_EVENT_FLAG_OR should be set.
  * @param timeout the waiting time
  * @param recved the received event
  *
@@ -1125,6 +1127,11 @@ rt_err_t rt_event_recv(rt_event_t   event,
         if (event->set & set)
             status = RT_EOK;
     }
+    else
+    {
+        /* either RT_EVENT_FLAG_AND or RT_EVENT_FLAG_OR should be set */
+        RT_ASSERT(0);
+    }
 
     if (status == RT_EOK)
     {