Ejemplo n.º 1
0
struct opd_event * find_counter_event(unsigned long counter)
{
	size_t i;
	struct opd_event * ret = NULL;

	if (counter >= OP_MAX_COUNTERS) {
		if((ret = opd_ext_find_counter_event(counter)) != NULL)
			return ret;
	}

	for (i = 0; i < op_nr_counters && opd_events[i].name; ++i) {
		if (counter == opd_events[i].counter)
			return &opd_events[i];
	}

	fprintf(stderr, "Unknown event for counter %lu\n", counter);
        /*
         * ANDROID FIXME - from time to time there seems to be 1 phantom event
         * reported from counter 3 when only counter 0 is enabled. Instead of
         * crashing the daemon and losing tons of useful samples, we just
         * charge the erroneous single count to the first event.
         */
#ifdef ANDROID
        return &opd_events[0];
#else
	abort();
	return NULL;

#endif
}
Ejemplo n.º 2
0
struct opd_event * find_counter_event(unsigned long counter)
{
	size_t i;
	struct opd_event * ret = NULL;

	if (counter >= OP_MAX_COUNTERS) {
		if((ret = opd_ext_find_counter_event(counter)) != NULL)
			return ret;
	}

	for (i = 0; i < op_nr_counters && opd_events[i].name; ++i) {
		if (counter == opd_events[i].counter)
			return &opd_events[i];
	}

	fprintf(stderr, "Unknown event for counter %lu\n", counter);
	abort();
	return NULL;
}