WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH 2/5 TAKE 2] xenoprof: make xen xenoprof code slight a

To: xen-devel@xxxxxxxxxxxxxxxxxxx, Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH 2/5 TAKE 2] xenoprof: make xen xenoprof code slight arch generic
From: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
Date: Tue, 14 Nov 2006 16:01:52 +0900
Cc: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>, xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Mon, 13 Nov 2006 23:02:48 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <20061114070138.9134.52656.sendpatchset@xxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <20061114070138.9134.52656.sendpatchset@xxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User yamahata@xxxxxxxxxxxxx
# Date 1163486060 -32400
# Node ID 0b4114873d25138823956186a87b34f884be6d9a
# Parent  24e1dacab1545640701709be7742608de73063cc
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
PATCHNAME: remove_x86_specific_code_from_xen_common_xenoprof_c

Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>

diff -r 24e1dacab154 -r 0b4114873d25 xen/arch/x86/oprofile/xenoprof.c
--- a/xen/arch/x86/oprofile/xenoprof.c  Tue Nov 14 15:34:19 2006 +0900
+++ b/xen/arch/x86/oprofile/xenoprof.c  Tue Nov 14 15:34:20 2006 +0900
@@ -12,6 +12,27 @@
 #include <xen/sched.h>
 #include <public/xenoprof.h>
 #include <asm/hvm/support.h>
+
+#include "op_counter.h"
+
+int xenoprof_arch_counter(XEN_GUEST_HANDLE(void) arg)
+{
+    struct xenoprof_counter counter;
+    if ( copy_from_guest(&counter, arg, 1) )
+        return -EFAULT;
+
+    if ( counter.ind > OP_MAX_COUNTER )
+        return -E2BIG;
+
+    counter_config[counter.ind].count     = (unsigned long) counter.count;
+    counter_config[counter.ind].enabled   = (unsigned long) counter.enabled;
+    counter_config[counter.ind].event     = (unsigned long) counter.event;
+    counter_config[counter.ind].kernel    = (unsigned long) counter.kernel;
+    counter_config[counter.ind].user      = (unsigned long) counter.user;
+    counter_config[counter.ind].unit_mask = (unsigned long) counter.unit_mask;
+
+    return 0;
+}
 
 int xenoprofile_get_mode(struct vcpu *v, struct cpu_user_regs * const regs)
 {
diff -r 24e1dacab154 -r 0b4114873d25 xen/common/xenoprof.c
--- a/xen/common/xenoprof.c     Tue Nov 14 15:34:19 2006 +0900
+++ b/xen/common/xenoprof.c     Tue Nov 14 15:34:20 2006 +0900
@@ -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
 
@@ -39,16 +37,6 @@ u64 passive_samples;
 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)
 {
@@ -449,9 +437,9 @@ static int xenoprof_op_init(XEN_GUEST_HA
     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,42 +562,26 @@ int do_xenoprof_op(int op, XEN_GUEST_HAN
             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) {
             ret = -EPERM;
             break;
         }
 
-        if ( copy_from_guest(&counter, arg, 1) )
-            return -EFAULT;
-
-        if ( counter.ind > OP_MAX_COUNTER )
-            return -E2BIG;
-
-        counter_config[counter.ind].count     = (unsigned long) counter.count;
-        counter_config[counter.ind].enabled   = (unsigned long) 
counter.enabled;
-        counter_config[counter.ind].event     = (unsigned long) counter.event;
-        counter_config[counter.ind].kernel    = (unsigned long) counter.kernel;
-        counter_config[counter.ind].user      = (unsigned long) counter.user;
-        counter_config[counter.ind].unit_mask = (unsigned long) 
counter.unit_mask;
-
-        ret = 0;
-        break;
-    }
+        ret = xenoprof_arch_counter(arg);
+        break;
 
     case XENOPROF_setup_events:
         if ( xenoprof_state != XENOPROF_COUNTERS_RESERVED ) {
             ret = -EPERM;
             break;
         }
-        ret = nmi_setup_events();
+        ret = xenoprof_arch_setup_events();
         if ( !ret )
             xenoprof_state = XENOPROF_READY;
         break;
@@ -619,7 +591,7 @@ int do_xenoprof_op(int op, XEN_GUEST_HAN
         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]);
@@ -634,7 +606,7 @@ int do_xenoprof_op(int op, XEN_GUEST_HAN
         ret = -EPERM;
         if ( (xenoprof_state == XENOPROF_READY) &&
              (activated == adomains) )
-            ret = nmi_start();
+            ret = xenoprof_arch_start();
 
         if ( ret == 0 )
             xenoprof_state = XENOPROF_PROFILING;
@@ -645,7 +617,7 @@ int do_xenoprof_op(int op, XEN_GUEST_HAN
             ret = -EPERM;
             break;
         }
-        nmi_stop();
+        xenoprof_arch_stop();
         xenoprof_state = XENOPROF_READY;
         break;
 
@@ -664,8 +636,8 @@ int do_xenoprof_op(int op, XEN_GUEST_HAN
              (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;
         }
diff -r 24e1dacab154 -r 0b4114873d25 xen/include/asm-x86/xenoprof.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-x86/xenoprof.h    Tue Nov 14 15:34:20 2006 +0900
@@ -0,0 +1,58 @@
+/******************************************************************************
+ * asm-x86/xenoprof.h
+ * xenoprof x86 arch specific header file
+ *
+ * Copyright (c) 2006 Isaku Yamahata <yamahata at valinux co jp>
+ *                    VA Linux Systems Japan K.K.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+
+#ifndef __ASM_XENOPROF_H__
+#define __ASM_XENOPROF_H__
+
+int nmi_init(int *num_events, int *is_primary, char *cpu_type);
+int nmi_reserve_counters(void);
+int nmi_setup_events(void);
+int nmi_enable_virq(void);
+int nmi_start(void);
+void nmi_stop(void);
+void nmi_disable_virq(void);
+void nmi_release_counters(void);
+
+#define xenoprof_arch_init(num_events, is_primary, cpu_type)    \
+    nmi_init(num_events, is_primary, cpu_type)
+#define xenoprof_arch_reserve_counters()        nmi_reserve_counters()
+#define xenoprof_arch_setup_events()            nmi_setup_events()
+#define xenoprof_arch_enable_virq()             nmi_enable_virq()
+#define xenoprof_arch_start()                   nmi_start()
+#define xenoprof_arch_stop()                    nmi_stop()
+#define xenoprof_arch_disable_virq()            nmi_disable_virq()
+#define xenoprof_arch_release_counters()        nmi_release_counters()
+
+int xenoprof_arch_counter(XEN_GUEST_HANDLE(void) arg);
+
+#endif /* __ASM_XENOPROF_H__ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r 24e1dacab154 -r 0b4114873d25 xen/include/xen/xenoprof.h
--- a/xen/include/xen/xenoprof.h        Tue Nov 14 15:34:19 2006 +0900
+++ b/xen/include/xen/xenoprof.h        Tue Nov 14 15:34:20 2006 +0900
@@ -11,6 +11,7 @@
 #define __XEN_XENOPROF_H__
 
 #include <public/xenoprof.h>
+#include <asm/xenoprof.h>
 
 #define XENOPROF_DOMAIN_IGNORED    0
 #define XENOPROF_DOMAIN_ACTIVE     1
yamahata

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel