Skip to content

Commit f35233b

Browse files
committed
Fix linking error on FreeRTOS when using portYIELD_FROM_ISR
1 parent 2890823 commit f35233b

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

erpc_c/port/erpc_threading_freertos.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,14 @@
1414

1515
#if ERPC_THREADS_IS(FREERTOS)
1616

17+
// The portYIELD_FROM_ISR() macro declares a variable called
18+
// ulPortYieldRequired. FreeRTOS assumes ulPortYieldRequired is in the
19+
// global namespace. To prevent linking errors, portYIELD_FROM_ISR()
20+
// should not be called from within a namespace.
21+
inline void ErpcPortYieldFromISR(BaseType_t &higher_priority_task_woken) {
22+
portYIELD_FROM_ISR(higher_priority_task_woken);
23+
}
24+
1725
using namespace erpc;
1826

1927
////////////////////////////////////////////////////////////////////////////////
@@ -248,7 +256,7 @@ void Semaphore::putFromISR(void)
248256
{
249257
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
250258
(void)xSemaphoreGiveFromISR(m_sem, &xHigherPriorityTaskWoken);
251-
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
259+
ErpcPortYieldFromISR(xHigherPriorityTaskWoken);
252260
}
253261

254262
bool Semaphore::get(uint32_t timeoutUsecs)

0 commit comments

Comments
 (0)