diff options
author | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2006-11-22 09:48:42 +0000 |
---|---|---|
committer | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2006-11-22 09:48:42 +0000 |
commit | c621e4b40d613123ef475846ccb7867b6548d727 (patch) | |
tree | b32208907345cfe94ace2f6cebaf87d5f7b06a8d /xen/common/xenoprof.c | |
parent | 7ecfc1cfff3985ae47de849bf0ea06591a1d1c23 (diff) | |
download | xen-c621e4b40d613123ef475846ccb7867b6548d727.tar.gz xen-c621e4b40d613123ef475846ccb7867b6548d727.tar.bz2 xen-c621e4b40d613123ef475846ccb7867b6548d727.zip |
[XENOPROFILE] Replace x86 specific code in xen/common/xenoprof.c
- replace nmi_ prefix with xenoprof_arch_ prefix
- move config_counter to xen/arch/x86/oprofile/xenoprof.c
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Diffstat (limited to 'xen/common/xenoprof.c')
-rw-r--r-- | xen/common/xenoprof.c | 50 |
1 files changed, 11 insertions, 39 deletions
diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c index 8657b16cc5..476b2ce715 100644 --- a/xen/common/xenoprof.c +++ b/xen/common/xenoprof.c @@ -12,8 +12,6 @@ #include <public/xenoprof.h> #include <asm/hvm/support.h> -#include "../arch/x86/oprofile/op_counter.h" - /* Limit amount of pages used for shared buffer (per domain) */ #define MAX_OPROF_SHARED_PAGES 32 @@ -40,16 +38,6 @@ u64 passive_samples; u64 idle_samples; u64 others_samples; - -extern int nmi_init(int *num_events, int *is_primary, char *cpu_type); -extern int nmi_reserve_counters(void); -extern int nmi_setup_events(void); -extern int nmi_enable_virq(void); -extern int nmi_start(void); -extern void nmi_stop(void); -extern void nmi_disable_virq(void); -extern void nmi_release_counters(void); - int is_active(struct domain *d) { struct xenoprof *x = d->xenoprof; @@ -445,9 +433,9 @@ static int xenoprof_op_init(XEN_GUEST_HANDLE(void) arg) if ( copy_from_guest(&xenoprof_init, arg, 1) ) return -EFAULT; - if ( (ret = nmi_init(&xenoprof_init.num_events, - &xenoprof_init.is_primary, - xenoprof_init.cpu_type)) ) + if ( (ret = xenoprof_arch_init(&xenoprof_init.num_events, + &xenoprof_init.is_primary, + xenoprof_init.cpu_type)) ) return ret; if ( copy_to_guest(arg, &xenoprof_init, 1) ) @@ -574,14 +562,12 @@ int do_xenoprof_op(int op, XEN_GUEST_HANDLE(void) arg) ret = -EPERM; break; } - ret = nmi_reserve_counters(); + ret = xenoprof_arch_reserve_counters(); if ( !ret ) xenoprof_state = XENOPROF_COUNTERS_RESERVED; break; case XENOPROF_counter: - { - struct xenoprof_counter counter; if ( (xenoprof_state != XENOPROF_COUNTERS_RESERVED) || (adomains == 0) ) { @@ -589,22 +575,8 @@ int do_xenoprof_op(int op, XEN_GUEST_HANDLE(void) arg) break; } - if ( copy_from_guest(&counter, arg, 1) ) - return -EFAULT; - - if ( counter.ind > OP_MAX_COUNTER ) - return -E2BIG; - - counter_config[counter.ind].count = counter.count; - counter_config[counter.ind].enabled = counter.enabled; - counter_config[counter.ind].event = counter.event; - counter_config[counter.ind].kernel = counter.kernel; - counter_config[counter.ind].user = counter.user; - counter_config[counter.ind].unit_mask = counter.unit_mask; - - ret = 0; + ret = xenoprof_arch_counter(arg); break; - } case XENOPROF_setup_events: if ( xenoprof_state != XENOPROF_COUNTERS_RESERVED ) @@ -612,7 +584,7 @@ int do_xenoprof_op(int op, XEN_GUEST_HANDLE(void) arg) ret = -EPERM; break; } - ret = nmi_setup_events(); + ret = xenoprof_arch_setup_events(); if ( !ret ) xenoprof_state = XENOPROF_READY; break; @@ -622,7 +594,7 @@ int do_xenoprof_op(int op, XEN_GUEST_HANDLE(void) arg) int i; if ( current->domain == primary_profiler ) { - nmi_enable_virq(); + xenoprof_arch_enable_virq(); xenoprof_reset_stat(); for ( i = 0; i < pdomains; i++ ) xenoprof_reset_buf(passive_domains[i]); @@ -636,7 +608,7 @@ int do_xenoprof_op(int op, XEN_GUEST_HANDLE(void) arg) ret = -EPERM; if ( (xenoprof_state == XENOPROF_READY) && (activated == adomains) ) - ret = nmi_start(); + ret = xenoprof_arch_start(); if ( ret == 0 ) xenoprof_state = XENOPROF_PROFILING; @@ -647,7 +619,7 @@ int do_xenoprof_op(int op, XEN_GUEST_HANDLE(void) arg) ret = -EPERM; break; } - nmi_stop(); + xenoprof_arch_stop(); xenoprof_state = XENOPROF_READY; break; @@ -667,8 +639,8 @@ int do_xenoprof_op(int op, XEN_GUEST_HANDLE(void) arg) (xenoprof_state == XENOPROF_READY) ) { xenoprof_state = XENOPROF_IDLE; - nmi_release_counters(); - nmi_disable_virq(); + xenoprof_arch_release_counters(); + xenoprof_arch_disable_virq(); reset_passive_list(); ret = 0; } |