static void EsifDataLogExit(esif_thread_t *dataLogThread) { g_dataLogQuit = ESIF_TRUE; esif_ccb_event_set(&g_dataLogQuitEvent); esif_ccb_thread_join(dataLogThread); esif_ccb_event_uninit(&g_dataLogQuitEvent); }
void EsifEventMgr_Disable(void) { ESIF_TRACE_ENTRY_INFO(); /* Release and destroy the event thread */ g_EsifEventMgr.eventQueueExitFlag = ESIF_TRUE; esif_queue_signal_event(g_EsifEventMgr.eventQueuePtr); esif_ccb_thread_join(&g_EsifEventMgr.eventQueueThread); ESIF_TRACE_EXIT_INFO(); }
/* stop web server and wait for worker threads to exit */ void esif_ws_exit(esif_thread_t *threadPtr) { CMD_OUT("Stopping WebServer...\n"); atomic_set(&g_ws_quit, 1); esif_ccb_thread_join(threadPtr); /* join to close child thread, clean up handle */ // Wait for worker thread to finish while (atomic_read(&g_ws_threads) > 0) { esif_ccb_sleep(1); } esif_ccb_mutex_uninit(&g_web_socket_lock); atomic_set(&g_ws_quit, 0); CMD_OUT("WebServer Stopped\n"); }