/** * @file op_x86_model.h * interface to x86 model-specific MSR operations * * @remark Copyright 2002 OProfile authors * @remark Read the file COPYING * * @author Graydon Hoare * @author Robert Richter <robert.richter@amd.com> */ #ifndef OP_X86_MODEL_H #define OP_X86_MODEL_H #include <asm/types.h> #include <asm/perf_event.h> struct op_msr { unsigned long addr; u64 saved; }; struct op_msrs { struct op_msr *counters; struct op_msr *controls; struct op_msr *multiplex; }; struct pt_regs; struct oprofile_operations; /* The model vtable abstracts the differences between * various x86 CPU models' perfctr support. */ struct op_x86_model_spec { unsigned int num_counters; unsigned int num_controls; unsigned int num_virt_counters; u64 reserved; u16 event_mask; int (*init)(struct oprofile_operations *ops); int (*fill_in_addresses)(struct op_msrs * const msrs); void (*setup_ctrs)(struct op_x86_model_spec const *model, struct op_msrs const * const msrs); int (*check_ctrs)(struct pt_regs * const regs, struct op_msrs const * const msrs); void (*start)(struct op_msrs const * const msrs); void (*stop)(struct op_msrs const * const msrs); void (*shutdown)(struct op_msrs const * const msrs); #ifdef CONFIG_OPROFILE_EVENT_MULTIPLEX void (*switch_ctrl)(struct op_x86_model_spec const *model, struct op_msrs const * const msrs); #endif }; struct op_counter_config;
static inline void op_x86_warn_in_use(int counter) { /* * The warning indicates an already running counter. If * oprofile doesn't collect data, then try using a different * performance counter on your platform to monitor the desired * event. Delete counter #%d from the desired event by editing * the /usr/share/oprofile/%s/<cpu>/events file. If the event * cannot be monitored by any other counter, contact your * hardware or BIOS vendor. */ pr_warning("oprofile: counter #%d on cpu #%d may already be used\n", counter, smp_processor_id()); }Contributors
Person | Tokens | Prop | Commits | CommitProp |
Robert Richter | 20 | 95.24% | 1 | 50.00% |
Chumbalkar Nagananda | 1 | 4.76% | 1 | 50.00% |
Total | 21 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
Robert Richter | 17 | 100.00% | 1 | 100.00% |
Total | 17 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
John Levon | 132 | 42.86% | 3 | 14.29% |
Robert Richter | 116 | 37.66% | 11 | 52.38% |
Jason Yeh | 34 | 11.04% | 1 | 4.76% |
Don Zickus | 14 | 4.55% | 1 | 4.76% |
Andi Kleen | 5 | 1.62% | 1 | 4.76% |
Greg Banks | 4 | 1.30% | 1 | 4.76% |
Ingo Molnar | 1 | 0.32% | 1 | 4.76% |
Simon Arlott | 1 | 0.32% | 1 | 4.76% |
Chumbalkar Nagananda | 1 | 0.32% | 1 | 4.76% |
Total | 308 | 100.00% | 21 | 100.00% |