mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Randy Dunlap <rdunlap@xenotime.net>
To: Nick Piggin <nickpiggin@yahoo.com.au>,
	tglx@linutronix.de, mingo@redhat.com, hpa@zytor.com
Cc: lkml <linux-kernel@vger.kernel.org>,
	torvalds <torvalds@linux-foundation.org>,
	akpm <akpm@linux-foundation.org>
Subject: [PATCH v2] bitops kernel-doc: inline instead of macro
Date: Thu, 25 Oct 2007 09:31:59 -0700	[thread overview]
Message-ID: <20071025093159.3ea69d03.rdunlap@xenotime.net> (raw)
In-Reply-To: <200710241800.19764.nickpiggin@yahoo.com.au>

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

> On Wednesday 24 October 2007 15:09, Randy Dunlap wrote:
> > From: Randy Dunlap <randy.dunlap@oracle.com>
> >
> > Can we expand this macro definition, or should I look for a way to
> > fool^W teach kernel-doc about this?
> >
> > scripts/kernel-doc says:
> > 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 '
> 
> Actually, it probably looks a bit nicer like this anyway. If you grep
> for it, then you can actually see the parameters...
> 
> On third thoughts, an inline function might be the best thing to do,
> and also avoid setting a bad example. What do you think?

---

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

  parent reply	other threads:[~2007-10-25 16:32 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-24  5:09 [PATCH] bitops kernel-doc: expand macro Randy Dunlap
2007-10-24  8:00 ` Nick Piggin
2007-10-24 15:38   ` Randy Dunlap
2007-10-25 16:31   ` Randy Dunlap [this message]
2007-10-25 16:42     ` [PATCH v2] bitops kernel-doc: inline instead of macro Thomas Gleixner
2007-10-25 16:55       ` Randy Dunlap
2007-10-25 17:05         ` Thomas Gleixner
2007-10-25 20:48         ` Andrew Morton
2007-10-25 21:21           ` [PATCH v3] " Randy Dunlap
2007-10-25 21:27             ` Thomas Gleixner
2007-10-25 21:27           ` [PATCH] x86 bitops: fix code style issues Randy Dunlap
2007-10-27 10:43           ` [PATCH v2] bitops kernel-doc: inline instead of macro Andy Whitcroft
2007-10-27 14:30             ` Andy Whitcroft
2007-10-27 18:48             ` H. Peter Anvin
2007-10-25 21:54         ` Nick Piggin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20071025093159.3ea69d03.rdunlap@xenotime.net \
    --to=rdunlap@xenotime.net \
    --cc=akpm@linux-foundation.org \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=nickpiggin@yahoo.com.au \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®