Lines Matching refs:loop

117 static void handler_execute(esp_event_loop_instance_t* loop, esp_event_handler_node_t *handler, esp…  in handler_execute()  argument
119 …xt %p on loop %p", post.base, post.id, handler->handler_ctx->handler, &handler->handler_ctx, loop); in handler_execute()
145 xSemaphoreTake(loop->profiling_mutex, portMAX_DELAY); in handler_execute()
152 SLIST_FOREACH(loop_node, &(loop->loop_nodes), next) { in handler_execute()
161 xSemaphoreGive(loop->profiling_mutex); in handler_execute()
463 esp_event_loop_instance_t* loop; in esp_event_loop_create() local
466 loop = calloc(1, sizeof(*loop)); in esp_event_loop_create()
467 if (loop == NULL) { in esp_event_loop_create()
472 loop->queue = xQueueCreate(event_loop_args->queue_size , sizeof(esp_event_post_instance_t)); in esp_event_loop_create()
473 if (loop->queue == NULL) { in esp_event_loop_create()
478 loop->mutex = xSemaphoreCreateRecursiveMutex(); in esp_event_loop_create()
479 if (loop->mutex == NULL) { in esp_event_loop_create()
485 loop->profiling_mutex = xSemaphoreCreateMutex(); in esp_event_loop_create()
486 if (loop->profiling_mutex == NULL) { in esp_event_loop_create()
492 SLIST_INIT(&(loop->loop_nodes)); in esp_event_loop_create()
497 event_loop_args->task_stack_size, (void*) loop, in esp_event_loop_create()
498 event_loop_args->task_priority, &(loop->task), event_loop_args->task_core_id); in esp_event_loop_create()
506 loop->name = event_loop_args->task_name; in esp_event_loop_create()
508 ESP_LOGD(TAG, "created task for loop %p", loop); in esp_event_loop_create()
510 loop->name = ""; in esp_event_loop_create()
511 loop->task = NULL; in esp_event_loop_create()
514 loop->running_task = NULL; in esp_event_loop_create()
518 SLIST_INSERT_HEAD(&s_event_loops, loop, next); in esp_event_loop_create()
522 *event_loop = (esp_event_loop_handle_t) loop; in esp_event_loop_create()
524 ESP_LOGD(TAG, "created event loop %p", loop); in esp_event_loop_create()
529 if (loop->queue != NULL) { in esp_event_loop_create()
530 vQueueDelete(loop->queue); in esp_event_loop_create()
533 if (loop->mutex != NULL) { in esp_event_loop_create()
534 vSemaphoreDelete(loop->mutex); in esp_event_loop_create()
538 if (loop->profiling_mutex != NULL) { in esp_event_loop_create()
539 vSemaphoreDelete(loop->profiling_mutex); in esp_event_loop_create()
543 free(loop); in esp_event_loop_create()
558 esp_event_loop_instance_t* loop = (esp_event_loop_instance_t*) event_loop; in esp_event_loop_run() local
569 while(xQueueReceive(loop->queue, &post, ticks_to_run) == pdTRUE) { in esp_event_loop_run()
571 xSemaphoreTakeRecursive(loop->mutex, portMAX_DELAY); in esp_event_loop_run()
573 loop->running_task = xTaskGetCurrentTaskHandle(); in esp_event_loop_run()
582 SLIST_FOREACH_SAFE(loop_node, &(loop->loop_nodes), next, temp_node) { in esp_event_loop_run()
585 handler_execute(loop, handler, post); in esp_event_loop_run()
593 handler_execute(loop, handler, post); in esp_event_loop_run()
601 handler_execute(loop, handler, post); in esp_event_loop_run()
622 xSemaphoreGiveRecursive(loop->mutex); in esp_event_loop_run()
629 loop->running_task = NULL; in esp_event_loop_run()
631 xSemaphoreGiveRecursive(loop->mutex); in esp_event_loop_run()
647 esp_event_loop_instance_t* loop = (esp_event_loop_instance_t*) event_loop; in esp_event_loop_delete() local
648 SemaphoreHandle_t loop_mutex = loop->mutex; in esp_event_loop_delete()
650 SemaphoreHandle_t loop_profiling_mutex = loop->profiling_mutex; in esp_event_loop_delete()
653 xSemaphoreTakeRecursive(loop->mutex, portMAX_DELAY); in esp_event_loop_delete()
656 xSemaphoreTake(loop->profiling_mutex, portMAX_DELAY); in esp_event_loop_delete()
658 SLIST_REMOVE(&s_event_loops, loop, esp_event_loop_instance, next); in esp_event_loop_delete()
663 if (loop->task != NULL) { in esp_event_loop_delete()
664 vTaskDelete(loop->task); in esp_event_loop_delete()
669 SLIST_FOREACH_SAFE(it, &(loop->loop_nodes), next, temp) { in esp_event_loop_delete()
671 SLIST_REMOVE(&(loop->loop_nodes), it, esp_event_loop_node, next); in esp_event_loop_delete()
677 while(xQueueReceive(loop->queue, &post, 0) == pdTRUE) { in esp_event_loop_delete()
682 vQueueDelete(loop->queue); in esp_event_loop_delete()
683 free(loop); in esp_event_loop_delete()
707 esp_event_loop_instance_t* loop = (esp_event_loop_instance_t*) event_loop; in esp_event_handler_register_with_internal() local
715 xSemaphoreTakeRecursive(loop->mutex, portMAX_DELAY); in esp_event_handler_register_with_internal()
719 SLIST_FOREACH(loop_node, &(loop->loop_nodes), next) { in esp_event_handler_register_with_internal()
742 SLIST_INSERT_HEAD(&(loop->loop_nodes), loop_node, next); in esp_event_handler_register_with_internal()
756 xSemaphoreGiveRecursive(loop->mutex); in esp_event_handler_register_with_internal()
788 esp_event_loop_instance_t* loop = (esp_event_loop_instance_t*) event_loop; in esp_event_handler_unregister_with_internal() local
790 xSemaphoreTakeRecursive(loop->mutex, portMAX_DELAY); in esp_event_handler_unregister_with_internal()
794 SLIST_FOREACH_SAFE(it, &(loop->loop_nodes), next, temp) { in esp_event_handler_unregister_with_internal()
798 SLIST_REMOVE(&(loop->loop_nodes), it, esp_event_loop_node, next); in esp_event_handler_unregister_with_internal()
804 xSemaphoreGiveRecursive(loop->mutex); in esp_event_handler_unregister_with_internal()
836 esp_event_loop_instance_t* loop = (esp_event_loop_instance_t*) event_loop; in esp_event_post_to() local
865 if (loop->task == NULL) { in esp_event_post_to()
867 result = xSemaphoreTakeRecursive(loop->mutex, ticks_to_wait); in esp_event_post_to()
870 if (loop->running_task != xTaskGetCurrentTaskHandle()) { in esp_event_post_to()
871 xSemaphoreGiveRecursive(loop->mutex); in esp_event_post_to()
872 result = xQueueSendToBack(loop->queue, &post, ticks_to_wait); in esp_event_post_to()
874 xSemaphoreGiveRecursive(loop->mutex); in esp_event_post_to()
875 result = xQueueSendToBack(loop->queue, &post, 0); in esp_event_post_to()
880 if (loop->task != xTaskGetCurrentTaskHandle()) { in esp_event_post_to()
881 result = xQueueSendToBack(loop->queue, &post, ticks_to_wait); in esp_event_post_to()
883 result = xQueueSendToBack(loop->queue, &post, 0); in esp_event_post_to()
891 atomic_fetch_add(&loop->events_dropped, 1); in esp_event_post_to()
897 atomic_fetch_add(&loop->events_recieved, 1); in esp_event_post_to()
913 esp_event_loop_instance_t* loop = (esp_event_loop_instance_t*) event_loop; in esp_event_isr_post_to() local
933 result = xQueueSendToBackFromISR(loop->queue, &post, task_unblocked); in esp_event_isr_post_to()
939 atomic_fetch_add(&loop->events_dropped, 1); in esp_event_isr_post_to()
945 atomic_fetch_add(&loop->events_recieved, 1); in esp_event_isr_post_to()