Lines Matching refs:pxCond

46 static void prvCondInit(lv_thread_sync_t * pxCond);
48 static void prvCheckCondInit(lv_thread_sync_t * pxCond);
50 static void prvCheckCondInitIsr(lv_thread_sync_t * pxCond);
53 static void prvTestAndDecrement(lv_thread_sync_t * pxCond,
185 lv_result_t lv_thread_sync_init(lv_thread_sync_t * pxCond) in lv_thread_sync_init() argument
188 prvCheckCondInit(pxCond); in lv_thread_sync_init()
193 lv_result_t lv_thread_sync_wait(lv_thread_sync_t * pxCond) in lv_thread_sync_wait() argument
198 prvCheckCondInit(pxCond); in lv_thread_sync_wait()
204 BaseType_t xSyncSygnal = pxCond->xSyncSignal; in lv_thread_sync_wait()
205 pxCond->xSyncSignal = pdFALSE; in lv_thread_sync_wait()
208 pxCond->xTaskToNotify = xCurrentTaskHandle; in lv_thread_sync_wait()
222 xSemaphoreTake(pxCond->xSyncMutex, portMAX_DELAY); in lv_thread_sync_wait()
224 while(!pxCond->xSyncSignal) { in lv_thread_sync_wait()
230 ulLocalWaitingThreads = Atomic_Increment_u32(&pxCond->ulWaitingThreads); in lv_thread_sync_wait()
232 BaseType_t xMutexStatus = xSemaphoreGive(pxCond->xSyncMutex); in lv_thread_sync_wait()
237 pxCond->xCondWaitSemaphore, in lv_thread_sync_wait()
241 xSemaphoreTake(pxCond->xSyncMutex, portMAX_DELAY); in lv_thread_sync_wait()
251 prvTestAndDecrement(pxCond, ulLocalWaitingThreads + 1); in lv_thread_sync_wait()
262 prvTestAndDecrement(pxCond, ulLocalWaitingThreads + 1); in lv_thread_sync_wait()
266 pxCond->xSyncSignal = pdFALSE; in lv_thread_sync_wait()
269 xSemaphoreGive(pxCond->xSyncMutex); in lv_thread_sync_wait()
275 lv_result_t lv_thread_sync_signal(lv_thread_sync_t * pxCond) in lv_thread_sync_signal() argument
278 prvCheckCondInit(pxCond); in lv_thread_sync_signal()
282 TaskHandle_t xTaskToNotify = pxCond->xTaskToNotify; in lv_thread_sync_signal()
283 pxCond->xTaskToNotify = NULL; in lv_thread_sync_signal()
286 pxCond->xSyncSignal = pdTRUE; in lv_thread_sync_signal()
298 xSemaphoreTake(pxCond->xSyncMutex, portMAX_DELAY); in lv_thread_sync_signal()
300 pxCond->xSyncSignal = pdTRUE; in lv_thread_sync_signal()
303 uint32_t ulLocalWaitingThreads = pxCond->ulWaitingThreads; in lv_thread_sync_signal()
310 &pxCond->ulWaitingThreads, in lv_thread_sync_signal()
315 xSemaphoreGive(pxCond->xCondWaitSemaphore); in lv_thread_sync_signal()
322 ulLocalWaitingThreads = pxCond->ulWaitingThreads; in lv_thread_sync_signal()
326 xSemaphoreGive(pxCond->xSyncMutex); in lv_thread_sync_signal()
332 lv_result_t lv_thread_sync_delete(lv_thread_sync_t * pxCond) in lv_thread_sync_delete() argument
336 vSemaphoreDelete(pxCond->xCondWaitSemaphore); in lv_thread_sync_delete()
337 vSemaphoreDelete(pxCond->xSyncMutex); in lv_thread_sync_delete()
338 pxCond->ulWaitingThreads = 0; in lv_thread_sync_delete()
340 pxCond->xSyncSignal = pdFALSE; in lv_thread_sync_delete()
341 pxCond->xIsInitialized = pdFALSE; in lv_thread_sync_delete()
346 lv_result_t lv_thread_sync_signal_isr(lv_thread_sync_t * pxCond) in lv_thread_sync_signal_isr() argument
351 prvCheckCondInitIsr(pxCond); in lv_thread_sync_signal_isr()
355 TaskHandle_t xTaskToNotify = pxCond->xTaskToNotify; in lv_thread_sync_signal_isr()
356 pxCond->xTaskToNotify = NULL; in lv_thread_sync_signal_isr()
359 pxCond->xSyncSignal = pdTRUE; in lv_thread_sync_signal_isr()
374 pxCond->xSyncSignal = pdTRUE; in lv_thread_sync_signal_isr()
378 for(uint32_t i = 0; i < pxCond->ulWaitingThreads; i++) { in lv_thread_sync_signal_isr()
379 xSemaphoreGiveFromISR(pxCond->xCondWaitSemaphore, &xAnyHigherPriorityTaskWoken); in lv_thread_sync_signal_isr()
470 static void prvCondInit(lv_thread_sync_t * pxCond) in prvCondInit() argument
472 pxCond->xIsInitialized = pdTRUE; in prvCondInit()
473 pxCond->xSyncSignal = pdFALSE; in prvCondInit()
476 pxCond->xTaskToNotify = NULL; in prvCondInit()
478 pxCond->xCondWaitSemaphore = xSemaphoreCreateCounting(ulMAX_COUNT, 0U); in prvCondInit()
481 if(pxCond->xCondWaitSemaphore == NULL) { in prvCondInit()
486 pxCond->xSyncMutex = xSemaphoreCreateMutex(); in prvCondInit()
489 if(pxCond->xSyncMutex == NULL) { in prvCondInit()
492 vSemaphoreDelete(pxCond->xCondWaitSemaphore); in prvCondInit()
497 pxCond->ulWaitingThreads = 0; in prvCondInit()
501 static void prvCheckCondInit(lv_thread_sync_t * pxCond) in prvCheckCondInit() argument
504 if(pxCond->xIsInitialized == pdFALSE) { in prvCheckCondInit()
512 if(pxCond->xIsInitialized == pdFALSE) { in prvCheckCondInit()
513 prvCondInit(pxCond); in prvCheckCondInit()
521 static void prvCheckCondInitIsr(lv_thread_sync_t * pxCond) in prvCheckCondInitIsr() argument
524 if(pxCond->xIsInitialized == pdFALSE) { in prvCheckCondInitIsr()
532 if(pxCond->xIsInitialized == pdFALSE) { in prvCheckCondInitIsr()
533 prvCondInit(pxCond); in prvCheckCondInitIsr()
542 static void prvTestAndDecrement(lv_thread_sync_t * pxCond, in prvTestAndDecrement() argument
550 &pxCond->ulWaitingThreads, in prvTestAndDecrement()
558 ulLocalWaitingThreads = pxCond->ulWaitingThreads; in prvTestAndDecrement()