[PATCH v2] bitops kernel-doc: inline instead of macro

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Nick Piggin <nickpiggin@...>, <tglx@...>, <mingo@...>, <hpa@...>
Cc: lkml <linux-kernel@...>, torvalds <torvalds@...>, akpm <akpm@...>
Date: Thursday, October 25, 2007 - 12:31 pm

On Wed, 24 Oct 2007 18:00:19 +1000 Nick Piggin wrote:


---

From: Randy Dunlap <randy.dunlap@oracle.com>

Use duplicated inline functions for test_and_set_bit_lock() on x86
instead of #define macros, thus avoiding a bad example.  This allows
kernel-doc to run cleanly instead of terminating with an error:

Error(linux-2.6.24-rc1//include/asm-x86/bitops_32.h:188): cannot understand prototype: 'test_and_set_bit_lock test_and_set_bit '

Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
---
 include/asm-x86/bitops_32.h |   13 +++++++++++--
 include/asm-x86/bitops_64.h |   13 +++++++++++--
 2 files changed, 22 insertions(+), 4 deletions(-)

--- linux-2.6.24-rc1.orig/include/asm-x86/bitops_32.h
+++ linux-2.6.24-rc1/include/asm-x86/bitops_32.h
@@ -183,9 +183,18 @@ static inline int test_and_set_bit(int n
  * @nr: Bit to set
  * @addr: Address to count from
  *
- * This is the same as test_and_set_bit on x86
+ * This is the same as test_and_set_bit on x86.
  */
-#define test_and_set_bit_lock test_and_set_bit
+static inline int test_and_set_bit_lock(int nr, volatile unsigned long * addr)
+{
+	int oldbit;
+
+	__asm__ __volatile__( LOCK_PREFIX
+		"btsl %2,%1\n\tsbbl %0,%0"
+		:"=r" (oldbit),"+m" (ADDR)
+		:"Ir" (nr) : "memory");
+	return oldbit;
+}
 
 /**
  * __test_and_set_bit - Set a bit and return its old value
--- linux-2.6.24-rc1.orig/include/asm-x86/bitops_64.h
+++ linux-2.6.24-rc1/include/asm-x86/bitops_64.h
@@ -173,9 +173,18 @@ static __inline__ int test_and_set_bit(i
  * @nr: Bit to set
  * @addr: Address to count from
  *
- * This is the same as test_and_set_bit on x86
+ * This is the same as test_and_set_bit on x86.
  */
-#define test_and_set_bit_lock test_and_set_bit
+static __inline__ int test_and_set_bit_lock(int nr, volatile void * addr)
+{
+	int oldbit;
+
+	__asm__ __volatile__( LOCK_PREFIX
+		"btsl %2,%1\n\tsbbl %0,%0"
+		:"=r" (oldbit),ADDR
+		:"dIr" (nr) : "memory");
+	return oldbit;
+}
 
 /**
  * __test_and_set_bit - Set a bit and return its old value
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH] bitops kernel-doc: expand macro, Randy Dunlap, (Wed Oct 24, 1:09 am)
Re: [PATCH] bitops kernel-doc: expand macro, Nick Piggin, (Wed Oct 24, 4:00 am)
[PATCH v2] bitops kernel-doc: inline instead of macro, Randy Dunlap, (Thu Oct 25, 12:31 pm)
Re: [PATCH v2] bitops kernel-doc: inline instead of macro, Thomas Gleixner, (Thu Oct 25, 12:42 pm)
Re: [PATCH v2] bitops kernel-doc: inline instead of macro, Randy Dunlap, (Thu Oct 25, 12:55 pm)
Re: [PATCH v2] bitops kernel-doc: inline instead of macro, Andrew Morton, (Thu Oct 25, 4:48 pm)
Re: [PATCH v2] bitops kernel-doc: inline instead of macro, Andy Whitcroft, (Sat Oct 27, 6:43 am)
Re: [PATCH v2] bitops kernel-doc: inline instead of macro, H. Peter Anvin, (Sat Oct 27, 2:48 pm)
Re: [PATCH v2] bitops kernel-doc: inline instead of macro, Andy Whitcroft, (Sat Oct 27, 10:30 am)
[PATCH] x86 bitops: fix code style issues, Randy Dunlap, (Thu Oct 25, 5:27 pm)
[PATCH v3] bitops kernel-doc: inline instead of macro, Randy Dunlap, (Thu Oct 25, 5:21 pm)
Re: [PATCH v3] bitops kernel-doc: inline instead of macro, Thomas Gleixner, (Thu Oct 25, 5:27 pm)
Re: [PATCH v2] bitops kernel-doc: inline instead of macro, Thomas Gleixner, (Thu Oct 25, 1:05 pm)
Re: [PATCH] bitops kernel-doc: expand macro, Randy Dunlap, (Wed Oct 24, 11:38 am)