static void *ESIF_CALLCONV EsifEventMgr_EventQueueThread(void *ctxPtr) { EsifEventQueueItemPtr queueEventPtr = NULL; UNREFERENCED_PARAMETER(ctxPtr); while(!g_EsifEventMgr.eventQueueExitFlag) { queueEventPtr = esif_queue_pull(g_EsifEventMgr.eventQueuePtr); if (NULL == queueEventPtr) { continue; } ESIF_TRACE_INFO("Dequeuing %s event for Part. %u Dom. 0x%04X\n", esif_event_type_str(queueEventPtr->eventType), queueEventPtr->participantId, queueEventPtr->domainId); EsifEventMgr_ProcessEvent(queueEventPtr->participantId, queueEventPtr->domainId, queueEventPtr->eventType, &queueEventPtr->eventData); esif_ccb_free(queueEventPtr->eventData.buf_ptr); esif_ccb_free(queueEventPtr); } return 0; }
/* Poll Event Queue */ struct esif_ipc *esif_event_queue_pull() { if (NULL != g_event_queue) return esif_queue_pull(g_event_queue); return NULL; }