Преглед изворни кода

freertos: Add os_cond_broadcast for pthread wrapper (#2937)

tkernelcn пре 2 година
родитељ
комит
92bf8547aa
1 измењених фајлова са 17 додато и 0 уклоњено
  1. 17 0
      core/shared/platform/common/freertos/freertos_thread.c

+ 17 - 0
core/shared/platform/common/freertos/freertos_thread.c

@@ -452,3 +452,20 @@ os_cond_signal(korp_cond *cond)
 
     return BHT_OK;
 }
+
+int
+os_cond_broadcast(korp_cond *cond)
+{
+    /* Signal all of the wait node of wait list */
+    xSemaphoreTake(cond->wait_list_lock, portMAX_DELAY);
+    if (cond->thread_wait_list) {
+        os_thread_wait_node *p = cond->thread_wait_list;
+        while (p) {
+            xSemaphoreGive(p->sem);
+            p = p->next;
+        }
+    }
+    xSemaphoreGive(cond->wait_list_lock);
+
+    return BHT_OK;
+}