static void do_test(struct allocated_counter const * it) { size_t i; size_t * counter_map; size_t nr_events; struct parsed_event parsed[MAX_EVENTS]; struct op_event const * event[MAX_EVENTS]; op_events(it->cpu_type); nr_events = parse_events(parsed, MAX_EVENTS, it->events); for (i = 0; i < nr_events; ++i) { event[i] = find_event_by_name(parsed[i].name, parsed[i].unit_mask, parsed[i].unit_mask_valid); if (!event[i]) { if (it->failure == fail_to_find_event) goto free_events; printf("Can't find events %s for cpu %s\n", parsed[i].name, op_get_cpu_type_str(it->cpu_type)); exit(EXIT_FAILURE); } } counter_map = map_event_to_counter(event, nr_events, it->cpu_type); if (!counter_map) { if (it->failure == fail_to_alloc_counter) goto free_events; printf("Can't map this set of events to counter:\n"); show_events(it->events); exit(EXIT_FAILURE); } for (i = 0; i < nr_events; ++i) { if (counter_map[i] != it->alloc_map[i]) { printf("Incorrect allocation map for these events:\n"); show_events(it->events); printf("(expect, found):\n"); show_counter_map(it->alloc_map, nr_events); show_counter_map(counter_map, nr_events); exit(EXIT_FAILURE); } } if (it->failure != no_failure) { /* test should fail but success! */ printf("test should fail with a failure type %d but succeed " "for events:\n", it->failure); for (i = 0; i < nr_events; ++i) printf("%s\n", it->events[i]); exit(EXIT_FAILURE); } free(counter_map); free_events: op_free_events(); }
/** make valgrind happy */ static void cleanup(void) { int i; for (i = 0; i < op_get_nr_counters(cpu_type); ++i) { if (parsed_events[i].name) free(parsed_events[i].name); } op_free_events(); if (optcon) poptFreeContext(optcon); if (parsed_events) free(parsed_events); }
/** make valgrind happy */ static void cleanup(void) { int i; if (parsed_events) { for (i = 0; i < num_chosen_events; ++i) { if (parsed_events[i].name) free(parsed_events[i].name); } } op_free_events(); if (optcon) poptFreeContext(optcon); if (parsed_events) free(parsed_events); }
static void clean_exit(void) { opd_cleanup_hash_name(); op_free_events(); unlink(op_lock_file); }