Kaynağa Gözat

sem give use from isr

sakumisu 3 yıl önce
ebeveyn
işleme
9ed5f1ce6b
1 değiştirilmiş dosya ile 4 ekleme ve 15 silme
  1. 4 15
      osal/usb_osal_freertos.c

+ 4 - 15
osal/usb_osal_freertos.c

@@ -63,22 +63,11 @@ int usb_osal_sem_take(usb_osal_sem_t sem, uint32_t timeout)
 int usb_osal_sem_give(usb_osal_sem_t sem)
 {
     BaseType_t xHigherPriorityTaskWoken = pdFALSE;
-    uint32_t intstatus = 0;
     int ret;
-#ifdef __riscv
-    /* Obtain the level of the currently executing interrupt. */
-    __asm volatile("csrr %0, mintstatus" : "=r"(intstatus)::"memory");
-#else
-     /* Obtain the number of the currently executing interrupt. */
-     __asm volatile ( "mrs %0, ipsr" : "=r" ( intstatus )::"memory" );
-#endif
-    if (intstatus == 0) {
-        ret = xSemaphoreGive((SemaphoreHandle_t)sem);
-    } else {
-        ret = xSemaphoreGiveFromISR((SemaphoreHandle_t)sem, &xHigherPriorityTaskWoken);
-        if (ret == pdPASS) {
-            portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
-        }
+
+    ret = xSemaphoreGiveFromISR((SemaphoreHandle_t)sem, &xHigherPriorityTaskWoken);
+    if (ret == pdPASS) {
+        portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
     }
 
     return (ret == pdPASS) ? 0 : -EINVAL;