[prev in list] [next in list] [prev in thread] [next in thread]
List: drbd-cvs
Subject: [DRBD-cvs] svn commit by phil - r2649 - in trunk/drbd: . linux -
From: drbd-cvs () linbit ! com
Date: 2006-12-28 15:54:30
Message-ID: 20061228155430.77E5A2CFF462 () mail ! linbit ! com
[Download RAW message or body]
Author: phil
Date: 2006-12-28 16:54:28 +0100 (Thu, 28 Dec 2006)
New Revision: 2649
Added:
trunk/drbd/linux/hardirq.h
Modified:
trunk/drbd/drbd_compat_wrappers.h
trunk/drbd/linux/connector.h
Log:
Make DRBD compile even on SLES9 (Kernel 2.6.5)
Modified: trunk/drbd/drbd_compat_wrappers.h
===================================================================
--- trunk/drbd/drbd_compat_wrappers.h 2006-12-28 12:07:12 UTC (rev 2648)
+++ trunk/drbd/drbd_compat_wrappers.h 2006-12-28 15:54:28 UTC (rev 2649)
@@ -166,3 +166,69 @@
kunmap(page);
return ret;
}
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10)
+
+#if defined(__x86_64__)
+
+static __inline__ int atomic_add_return(int i, atomic_t *v)
+{
+ int __i = i;
+ __asm__ __volatile__(
+ LOCK_PREFIX "xaddl %0, %1;"
+ :"=r"(i)
+ :"m"(v->counter), "0"(i));
+ return i + __i;
+}
+
+static __inline__ int atomic_sub_return(int i, atomic_t *v)
+{
+ return atomic_add_return(-i,v);
+}
+
+#define atomic_inc_return(v) (atomic_add_return(1,v))
+#define atomic_dec_return(v) (atomic_sub_return(1,v))
+
+#elif defined(__i386__) || defined(__arch_um__)
+
+static __inline__ int atomic_add_return(int i, atomic_t *v)
+{
+ int __i;
+#ifdef CONFIG_M386
+ unsigned long flags;
+ if(unlikely(boot_cpu_data.x86==3))
+ goto no_xadd;
+#endif
+ /* Modern 486+ processor */
+ __i = i;
+ __asm__ __volatile__(
+ LOCK_PREFIX "xaddl %0, %1;"
+ :"=r"(i)
+ :"m"(v->counter), "0"(i));
+ return i + __i;
+
+#ifdef CONFIG_M386
+no_xadd: /* Legacy 386 processor */
+ local_irq_save(flags);
+ __i = atomic_read(v);
+ atomic_set(v, i + __i);
+ local_irq_restore(flags);
+ return i + __i;
+#endif
+}
+
+static __inline__ int atomic_sub_return(int i, atomic_t *v)
+{
+ return atomic_add_return(-i,v);
+}
+
+#define atomic_inc_return(v) (atomic_add_return(1,v))
+#define atomic_dec_return(v) (atomic_sub_return(1,v))
+
+#else
+# error "You need to copy/past atomic_inc_return()/atomic_dec_return() here"
+# error "for your architecture. (Hint: Kernels after 2.6.10 have those"
+# error "by default! Using a later kernel might be less effort!)"
+#endif
+
+#endif
Modified: trunk/drbd/linux/connector.h
===================================================================
--- trunk/drbd/linux/connector.h 2006-12-28 12:07:12 UTC (rev 2648)
+++ trunk/drbd/linux/connector.h 2006-12-28 15:54:28 UTC (rev 2649)
@@ -96,10 +96,8 @@
#ifdef __KERNEL__
#include <linux/drbd_config.h>
-#if defined(NETLINK_ROUTE6) && !defined(KERNEL_HAS_GFP_T)
- /* pre 2.6.16 */
- /* This ifdef check needs to be refined */
-typedef unsigned __bitwise__ gfp_t;
+#if !defined(KERNEL_HAS_GFP_T)
+typedef unsigned int gfp_t;
#endif
#include <asm/atomic.h>
Added: trunk/drbd/linux/hardirq.h
===================================================================
--- trunk/drbd/linux/hardirq.h 2006-12-28 12:07:12 UTC (rev 2648)
+++ trunk/drbd/linux/hardirq.h 2006-12-28 15:54:28 UTC (rev 2649)
@@ -0,0 +1 @@
+/* Just an empty file. */
_______________________________________________
drbd-cvs mailing list
drbd-cvs@lists.linbit.com
http://lists.linbit.com/mailman/listinfo/drbd-cvs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic