From: Jan Kiszka <jan.kiszka@domain.hid>
To: rpm@xenomai.org
Cc: xenomai@xenomai.org
Subject: Re: [Xenomai-core] Proposed arch/powerpc/sysdev/uic.c patch
Date: Thu, 25 Oct 2007 22:37:11 +0200 [thread overview]
Message-ID: <4720FE77.2020302@domain.hid> (raw)
In-Reply-To: <4720FB07.10606@domain.hid>
[-- Attachment #1: Type: text/plain, Size: 2722 bytes --]
Philippe Gerum wrote:
> Steven A. Falco wrote:
>> I applied the uic patch:
>>
>> diff --git a/arch/powerpc/sysdev/uic.c b/arch/powerpc/sysdev/uic.c
>> index eeb38e2..5a38086 100644
>> --- a/arch/powerpc/sysdev/uic.c
>> +++ b/arch/powerpc/sysdev/uic.c
>> @@ -48,7 +48,7 @@ struct uic {
>> int index;
>> int dcrbase;
>>
>> - spinlock_t lock;
>> + ipipe_spinlock_t lock;
>>
>> /* The remapper for this UIC */
>> struct irq_host *irqhost;
>>
>> However, this would not compile because of a type mismatch. I have
>> added the attached patch, and it now compiles and runs. But I'm not
>> sure if this is the right way to fix it. Comments?
>>
>
> This will work for the purpose of running an I-pipe enabled kernel, but
> would fail with CONFIG_IPIPE disabled. Since we need to provide both,
> I'm going to work on the proper patch for fixing the issue both ways.
> Still, your patch will work as expected for running Xenomai.
To be consequent, we would have to wrap spin_lock_init just like the
other operations. Suggestion (not really tested):
Index: linux-2.6.23-ipipe/include/linux/spinlock.h
===================================================================
--- linux-2.6.23-ipipe.orig/include/linux/spinlock.h
+++ linux-2.6.23-ipipe/include/linux/spinlock.h
@@ -89,10 +89,22 @@ extern int __lockfunc generic__raw_read_
# include <linux/spinlock_up.h>
#endif
+#undef TYPE_EQUAL
+#define TYPE_EQUAL(lock, type) \
+ __builtin_types_compatible_p(typeof(lock), type *)
+
+#define spin_lock_init(lock) \
+do { \
+ if (TYPE_EQUAL((lock), __ipipe_spinlock_t)) \
+ *(__ipipe_spinlock_t *)(lock) = IPIPE_SPIN_LOCK_UNLOCKED; \
+ else if (TYPE_EQUAL(lock, spinlock_t)) \
+ _spin_lock_init((spinlock_t *)(lock)); \
+} while (0)
+
#ifdef CONFIG_DEBUG_SPINLOCK
extern void __spin_lock_init(spinlock_t *lock, const char *name,
struct lock_class_key *key);
-# define spin_lock_init(lock) \
+# define _spin_lock_init(lock) \
do { \
static struct lock_class_key __key; \
\
@@ -100,7 +112,7 @@ do { \
} while (0)
#else
-# define spin_lock_init(lock) \
+# define _spin_lock_init(lock) \
do { *(lock) = SPIN_LOCK_UNLOCKED; } while (0)
#endif
@@ -172,10 +184,6 @@ do { \
#define read_trylock(lock) __cond_lock(lock, _read_trylock(lock))
#define write_trylock(lock) __cond_lock(lock, _write_trylock(lock))
-#undef TYPE_EQUAL
-#define TYPE_EQUAL(lock, type) \
- __builtin_types_compatible_p(typeof(lock), type *)
-
#define PICK_SPINOP(op, lock) \
do { \
if (TYPE_EQUAL((lock), __ipipe_spinlock_t)) \
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 249 bytes --]
next prev parent reply other threads:[~2007-10-25 20:37 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-25 20:10 [Xenomai-core] Proposed arch/powerpc/sysdev/uic.c patch Steven A. Falco
2007-10-25 20:22 ` Philippe Gerum
2007-10-25 20:37 ` Jan Kiszka [this message]
2007-10-25 21:03 ` Philippe Gerum
2007-10-26 8:32 ` Jan Kiszka
2007-10-26 10:06 ` Philippe Gerum
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=4720FE77.2020302@domain.hid \
--to=jan.kiszka@domain.hid \
--cc=rpm@xenomai.org \
--cc=xenomai@xenomai.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.