Oprofile Multiplexing Patch
This patch introduces multiplexing support for the Oprofile kernel module. It basically adds a new function pointer in oprofile_operator allowing each architecture to supply its callback to switch between different sets of event when the timer expires. Userspace tools can modify the time slice through /dev/oprofile/time_slice. It also modifies the number of counters exposed to the userspace through /dev/oprofile. For example, the number of counters for AMD CPUs are changed to 32 and multiplexed in the sets of 4. Signed-off-by: Jason Yeh <jason.yeh@amd.com> Signed-off-by: Robert Richter <robert.richter@amd.com> Cc: oprofile-list <oprofile-list@lists.sourceforge.net> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
@@ -19,6 +19,7 @@ struct op_saved_msr {
|
||||
struct op_msr {
|
||||
unsigned long addr;
|
||||
struct op_saved_msr saved;
|
||||
struct op_saved_msr multiplex;
|
||||
};
|
||||
|
||||
struct op_msrs {
|
||||
@@ -34,6 +35,8 @@ struct pt_regs;
|
||||
struct op_x86_model_spec {
|
||||
int (*init)(struct oprofile_operations *ops);
|
||||
void (*exit)(void);
|
||||
unsigned int const num_hardware_counters;
|
||||
unsigned int const num_hardware_controls;
|
||||
unsigned int const num_counters;
|
||||
unsigned int const num_controls;
|
||||
void (*fill_in_addresses)(struct op_msrs * const msrs);
|
||||
|
Reference in New Issue
Block a user