/* $Id: event_set_x86.c,v 1.3 2004/08/02 14:36:10 mikpe Exp $ * Descriptions of the events available for different processor types. * * Copyright (C) 1999-2004 Mikael Pettersson */ #include /* for NULL */ #include "libperfctr.h" #include "event_set.h" /* * Generic events. */ static const struct perfctr_event_set generic_event_set = { .cpu_type = PERFCTR_X86_GENERIC, .event_prefix = NULL, .include = NULL, .nevents = 0, .events = NULL, }; /* * Helper function to translate a cpu_type code to an event_set pointer. */ static const struct perfctr_event_set * const cpu_event_set[] = { [PERFCTR_X86_GENERIC] = &generic_event_set, #if !defined(__x86_64__) [PERFCTR_X86_INTEL_P5] = &perfctr_p5_event_set, [PERFCTR_X86_INTEL_P5MMX] = &perfctr_p5mmx_event_set, [PERFCTR_X86_INTEL_P6] = &perfctr_ppro_event_set, [PERFCTR_X86_INTEL_PII] = &perfctr_p2_event_set, [PERFCTR_X86_INTEL_PIII] = &perfctr_p3_event_set, [PERFCTR_X86_CYRIX_MII] = &perfctr_mii_event_set, [PERFCTR_X86_WINCHIP_C6] = &perfctr_wcc6_event_set, [PERFCTR_X86_WINCHIP_2] = &perfctr_wc2_event_set, [PERFCTR_X86_AMD_K7] = &perfctr_k7_event_set, [PERFCTR_X86_VIA_C3] = &perfctr_vc3_event_set, [PERFCTR_X86_INTEL_P4] = &perfctr_p4_event_set, [PERFCTR_X86_INTEL_P4M2] = &perfctr_p4_event_set, [PERFCTR_X86_INTEL_PENTM] = &perfctr_pentm_event_set, #endif [PERFCTR_X86_INTEL_P4M3] = &perfctr_p4m3_event_set, [PERFCTR_X86_AMD_K8] = &perfctr_k8_event_set, [PERFCTR_X86_AMD_K8C] = &perfctr_k8c_event_set, }; const struct perfctr_event_set *perfctr_cpu_event_set(unsigned cpu_type) { if( cpu_type >= ARRAY_SIZE(cpu_event_set) ) return 0; return cpu_event_set[cpu_type]; }