Exemple #1
0
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;
}
Exemple #2
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;
}