[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] Clean up SMP macros and always have IRQs disabled when executing an



# HG changeset patch
# User Keir Fraser <keir@xxxxxxxxxxxxx>
# Date 1192105961 -3600
# Node ID 034df2dca6081e3b88be549e66c67184b6bbce55
# Parent  cab326925ea6896d1b623629926d0011c29d1798
Clean up SMP macros and always have IRQs disabled when executing an
'smp_call_function' callback function.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 xen/include/xen/smp.h |   31 ++++++++++++++++---------------
 1 files changed, 16 insertions(+), 15 deletions(-)

diff -r cab326925ea6 -r 034df2dca608 xen/include/xen/smp.h
--- a/xen/include/xen/smp.h     Thu Oct 11 13:27:38 2007 +0100
+++ b/xen/include/xen/smp.h     Thu Oct 11 13:32:41 2007 +0100
@@ -61,20 +61,6 @@ extern int on_selected_cpus(
     int wait);
 
 /*
- * Call a function on all processors
- */
-static inline int on_each_cpu(
-    void (*func) (void *info),
-    void *info,
-    int retry,
-    int wait)
-{
-    int ret = smp_call_function(func, info, retry, wait);
-    func(info);
-    return ret;
-}
-
-/*
  * Mark the boot cpu "online" so that it can call console drivers in
  * printk() and can access its per-cpu storage.
  */
@@ -91,7 +77,6 @@ void smp_prepare_boot_cpu(void);
 #define raw_smp_processor_id()                 0
 #define hard_smp_processor_id()                        0
 #define smp_call_function(func,info,retry,wait)        ({ do {} while (0); 0; 
})
-#define on_each_cpu(func,info,retry,wait)      ({ func(info); 0; })
 #define num_booting_cpus()                     1
 #define smp_prepare_boot_cpu()                 do {} while (0)
 
@@ -103,12 +88,28 @@ static inline int on_selected_cpus(
     int wait)
 {
     if ( cpu_isset(0, selected) )
+    {
+        local_irq_disable();
         func(info);
+        local_irq_enable();
+    }
     return 0;
 }
 
 #endif
 
+/*
+ * Call a function on all processors
+ */
+static inline int on_each_cpu(
+    void (*func) (void *info),
+    void *info,
+    int retry,
+    int wait)
+{
+    return on_selected_cpus(cpu_online_map, func, info, retry, wait);
+}
+
 #define smp_processor_id() raw_smp_processor_id()
 
 #endif

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.