Пример #1
0
void EsifAct_DestroyAction(
	EsifActPtr self
	)
{
	if (NULL == self) {
		goto exit;
	}

	self->markedForDelete = ESIF_TRUE;
	EsifAct_PutRef(self);

	ESIF_TRACE_INFO("Destroy action %d : waiting for delete event...\n", self->type);
	esif_ccb_event_wait(&self->deleteEvent);

	EsifAct_UnregisterEvents(self);

	EsifAct_CallIfaceDestroy(self);

	esif_ccb_event_uninit(&self->deleteEvent);
	esif_ccb_lock_uninit(&self->objLock);

	esif_ccb_free(self);
exit:
	return;
}
Пример #2
0
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);
}
Пример #3
0
enum esif_rc esif_ccb_timer_kill_w_wait(
	esif_ccb_timer_t *timer_ptr
	)
{
	enum esif_rc rc = ESIF_OK;
	esif_ccb_event_t kill_event;

	esif_ccb_event_init(&kill_event);
	rc = esif_ccb_timer_kill_w_event(timer_ptr, &kill_event);
	esif_ccb_event_wait(&kill_event);
	esif_ccb_event_uninit(&kill_event);

	return rc;
}