Bläddra i källkod

Merge branch 'bugfix/ringbuf_send_semaphore_release_order_v4.1' into 'release/v4.1'

esp_ringbuf: Fix order of semaphore release in xRingbufferSend (v4.1)

See merge request espressif/esp-idf!16232
Sudeep Mohanty 4 år sedan
förälder
incheckning
0a68ce5952
1 ändrade filer med 7 tillägg och 7 borttagningar
  1. 7 7
      components/esp_ringbuf/ringbuf.c

+ 7 - 7
components/esp_ringbuf/ringbuf.c

@@ -1,4 +1,4 @@
-// Copyright 2015-2019 Espressif Systems (Shanghai) PTE LTD
+// Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -1040,13 +1040,13 @@ BaseType_t xRingbufferSend(RingbufHandle_t xRingbuffer,
          */
     }
 
+    if (xReturnSemaphore == pdTRUE) {
+        xSemaphoreGive(rbGET_TX_SEM_HANDLE(pxRingbuffer));  //Give back semaphore so other tasks can send
+    }
     if (xReturn == pdTRUE) {
         //Indicate item was successfully sent
         xSemaphoreGive(rbGET_RX_SEM_HANDLE(pxRingbuffer));
     }
-    if (xReturnSemaphore == pdTRUE) {
-        xSemaphoreGive(rbGET_TX_SEM_HANDLE(pxRingbuffer));  //Give back semaphore so other tasks can send
-    }
     return xReturn;
 }
 
@@ -1082,13 +1082,13 @@ BaseType_t xRingbufferSendFromISR(RingbufHandle_t xRingbuffer,
     }
     portEXIT_CRITICAL_ISR(&pxRingbuffer->mux);
 
+    if (xReturnSemaphore == pdTRUE) {
+        xSemaphoreGiveFromISR(rbGET_TX_SEM_HANDLE(pxRingbuffer), pxHigherPriorityTaskWoken);  //Give back semaphore so other tasks can send
+    }
     if (xReturn == pdTRUE) {
         //Indicate item was successfully sent
         xSemaphoreGiveFromISR(rbGET_RX_SEM_HANDLE(pxRingbuffer), pxHigherPriorityTaskWoken);
     }
-    if (xReturnSemaphore == pdTRUE) {
-        xSemaphoreGiveFromISR(rbGET_TX_SEM_HANDLE(pxRingbuffer), pxHigherPriorityTaskWoken);  //Give back semaphore so other tasks can send
-    }
     return xReturn;
 }