]> xenbits.xensource.com Git - xen.git/commitdiff
xen: Make bool_t an arch-dep definition, and define macros
authorKeir Fraser <keir@xensource.com>
Fri, 6 Apr 2007 09:10:45 +0000 (10:10 +0100)
committerKeir Fraser <keir@xensource.com>
Fri, 6 Apr 2007 09:10:45 +0000 (10:10 +0100)
specifically for atomic test-and-modify operations on bool_t.
Signed-off-by: Keir Fraser <keir@xensource.com>
xen/common/domain.c
xen/include/asm-ia64/xentypes.h
xen/include/asm-powerpc/types.h
xen/include/asm-x86/types.h
xen/include/xen/types.h

index d94e65914f11907491659e14f55e3024f1ee2b3b..b876984869262ec92bdad361f4c21993fb6714f2 100644 (file)
@@ -307,7 +307,7 @@ void domain_kill(struct domain *d)
     domain_pause(d);
 
     /* Already dying? Then bail. */
-    if ( xchg(&d->is_dying, 1) )
+    if ( test_and_set_bool(d->is_dying) )
     {
         domain_unpause(d);
         return;
@@ -453,7 +453,7 @@ void domain_pause_for_debugger(void)
     struct vcpu *v;
 
     atomic_inc(&d->pause_count);
-    if ( xchg(&d->is_paused_by_controller, 1) )
+    if ( test_and_set_bool(d->is_paused_by_controller) )
         domain_unpause(d); /* race-free atomic_dec(&d->pause_count) */
 
     for_each_vcpu ( d, v )
@@ -553,13 +553,13 @@ void domain_unpause(struct domain *d)
 void domain_pause_by_systemcontroller(struct domain *d)
 {
     domain_pause(d);
-    if ( xchg(&d->is_paused_by_controller, 1) )
+    if ( test_and_set_bool(d->is_paused_by_controller) )
         domain_unpause(d);
 }
 
 void domain_unpause_by_systemcontroller(struct domain *d)
 {
-    if ( xchg(&d->is_paused_by_controller, 0) )
+    if ( test_and_clear_bool(d->is_paused_by_controller) )
         domain_unpause(d);
 }
 
index d8bc8c0925cd1eaa2eca1ecf40a9eacc5fc733c9..a482e0191e9a96fdb6bd3030d78f437d8f1f8595 100644 (file)
@@ -5,6 +5,11 @@
 typedef unsigned long ssize_t;
 typedef unsigned long size_t;
 typedef long long loff_t;
+
+typedef char bool_t;
+#define test_and_set_bool(b)   xchg(&(b), 1)
+#define test_and_clear_bool(b) xchg(&(b), 0)
+
 #endif /* !__ASSEMBLY__ */
 
 #endif /* _ASM_IA64_XENTYPES_H */
index aab8d17e6dec5fcd3e6a84f4b4b2b7abad87511d..5f6b4a6b0e1a2fe58665e083618832caf99c1793 100644 (file)
@@ -70,5 +70,9 @@ typedef u64 dma64_addr_t;
 
 typedef unsigned short xmem_bufctl_t;
 
+typedef int bool_t;
+#define test_and_set_bool(b)   xchg(&(b), 1)
+#define test_and_clear_bool(b) xchg(&(b), 0)
+
 #endif  /* __ASSEMBLY__ */
 #endif
index 1ebe5a16d986ea4fd9d7e3c052f4d91c3031f1bb..fd2fd069b62bb0d5828af3590f37c029fd0b8410 100644 (file)
@@ -52,6 +52,10 @@ typedef unsigned long paddr_t;
 
 typedef unsigned long size_t;
 
+typedef char bool_t;
+#define test_and_set_bool(b)   xchg(&(b), 1)
+#define test_and_clear_bool(b) xchg(&(b), 0)
+
 #endif /* __ASSEMBLY__ */
 
 #if defined(__i386__)
index 7b1f3c0d848d7087075b869dbbd186dfec547a49..fd89c98427238e01eb96f8f58214dad7b60791b8 100644 (file)
@@ -20,8 +20,6 @@
 #define LONG_MIN        (-LONG_MAX - 1)
 #define ULONG_MAX       (~0UL)
 
-typedef char bool_t;
-
 /* bsd */
 typedef unsigned char           u_char;
 typedef unsigned short          u_short;