void esif_uf_exit() { /* Stop event thread */ g_quit = ESIF_TRUE; /* Stop web server if it is running */ EsifWebStop(); EsifDataLogStop(); EsifUFPollStop(); /* Stop all Apps before dependent components they may be using */ EsifAppMgrExit(); /* OS Specific */ esif_uf_os_exit(); /* OS Agnostic - Call in reverse order of Init */ EsifUpPm_Exit(); EsifActMgrExit(); EsifDspMgrExit(); EsifEventMgr_Exit(); EsifCnjMgrExit(); EsifCfgMgrExit(); EsifLogMgrExit(); esif_ccb_tmrm_exit(); esif_ht_exit(); esif_link_list_exit(); esif_ccb_mempool_uninit_tracking(); // Re-Initialize necessary global variables in case ESIF restarted g_esif_started = ESIF_FALSE; ESIF_TRACE_DEBUG("Exit Upper Framework (UF)"); #ifdef ESIF_ATTR_SHELL_LOCK esif_ccb_mutex_uninit(&g_shellLock); #endif ESIF_TRACE_EXIT_INFO(); }
eEsifError EsifEventMgr_Init(void) { eEsifError rc = ESIF_OK; UInt8 i; ESIF_TRACE_ENTRY_INFO(); esif_ccb_lock_init(&g_EsifEventMgr.listLock); for (i = 0; i < NUM_EVENT_LISTS; i++) { g_EsifEventMgr.observerLists[i] = esif_link_list_create(); if (NULL == g_EsifEventMgr.observerLists[i]) { rc = ESIF_E_NO_MEMORY; goto exit; } } g_EsifEventMgr.eventQueuePtr = esif_queue_create(ESIF_UF_EVENT_QUEUE_SIZE, ESIF_UF_EVENT_QUEUE_NAME, ESIF_UF_EVENT_QUEUE_TIMEOUT); g_EsifEventMgr.garbageList = esif_link_list_create(); if ((NULL == g_EsifEventMgr.eventQueuePtr) || (NULL == g_EsifEventMgr.garbageList)) { rc = ESIF_E_NO_MEMORY; goto exit; } rc = esif_ccb_thread_create(&g_EsifEventMgr.eventQueueThread, EsifEventMgr_EventQueueThread, NULL); if (rc != ESIF_OK) { goto exit; } exit: if (rc != ESIF_OK) { EsifEventMgr_Exit(); } ESIF_TRACE_EXIT_INFO_W_STATUS(rc); return rc; }