2002-07-23 16:26:05

by Dave Hansen

[permalink] [raw]
Subject: [PATCH] reduce code in generic spinlock.h

diff -ur linux-2.5.27-clean/include/linux/spinlock.h linux-2.5.27/include/linux/spinlock.h
--- linux-2.5.27-clean/include/linux/spinlock.h Tue Jul 23 09:19:51 2002
+++ linux-2.5.27/include/linux/spinlock.h Tue Jul 23 09:26:16 2002
@@ -150,6 +150,14 @@
preempt_schedule(); \
} while (0)

+#else /* !CONFIG_PREEMPT */
+#define preempt_get_count() (0)
+#define preempt_disable() do { } while(0)
+#define preempt_enable_no_resched() do { } while(0)
+#define preempt_enable() do { } while(0)
+#define preempt_check_resched() do { } while(0)
+#endif /* !CONFIG_PREEMPT */
+
#define spin_lock(lock) \
do { \
preempt_disable(); \
@@ -176,26 +184,6 @@
#define write_unlock(lock) ({_raw_write_unlock(lock); preempt_enable();})
#define write_trylock(lock) ({preempt_disable();_raw_write_trylock(lock) ? \
1 : ({preempt_enable(); 0;});})
-
-#else
-
-#define preempt_get_count() (0)
-#define preempt_disable() do { } while (0)
-#define preempt_enable_no_resched() do {} while(0)
-#define preempt_enable() do { } while (0)
-#define preempt_check_resched() do { } while (0)
-
-#define spin_lock(lock) _raw_spin_lock(lock)
-#define spin_trylock(lock) _raw_spin_trylock(lock)
-#define spin_unlock(lock) _raw_spin_unlock(lock)
-#define spin_unlock_no_resched(lock) _raw_spin_unlock(lock)
-
-#define read_lock(lock) _raw_read_lock(lock)
-#define read_unlock(lock) _raw_read_unlock(lock)
-#define write_lock(lock) _raw_write_lock(lock)
-#define write_unlock(lock) _raw_write_unlock(lock)
-#define write_trylock(lock) _raw_write_trylock(lock)
-#endif

/* "lock on reference count zero" */
#ifndef ATOMIC_DEC_AND_LOCK
Only in linux-2.5.27-clean/include/linux: spinlock.h.orig


Attachments:
spinlock-cleanup-2.5.27-2.diff (1.65 kB)

2002-07-23 16:35:32

by Robert Love

[permalink] [raw]
Subject: Re: [PATCH] reduce code in generic spinlock.h

On Tue, 2002-07-23 at 09:28, Dave Hansen wrote:

> The last time lockmeter was ported to 2.5, it was getting a little
> messy. There were separate declarations for spin_*lock() for each
> combination of lockmeter and preemption, which made four, plus the
> no-smp definition. While lockmeter's mess isn't the kernel's fault,
> we noticed some some simplifications which could be made to the
> generic spinlock code. This patch uses a single definition for each
> of the macros, eliminating some redundant code.

I have no problems with this (assuming it is right and it looks so on
first glance).

It will not apply to Linus's current tree, however, because of the IRQ
rewrite that is now applied. If you pull his BK tree and diff against
that, you should be OK... most notably, the preemption code has moved to
preempt.h.

Robert Love

2002-07-23 16:38:47

by Dave Hansen

[permalink] [raw]
Subject: Re: [PATCH] reduce code in generic spinlock.h

Robert Love wrote:
> On Tue, 2002-07-23 at 09:28, Dave Hansen wrote:
>
>>The last time lockmeter was ported to 2.5, it was getting a little
>>messy. There were separate declarations for spin_*lock() for each
>>combination of lockmeter and preemption, which made four, plus the
>>no-smp definition. While lockmeter's mess isn't the kernel's fault,
>>we noticed some some simplifications which could be made to the
>>generic spinlock code. This patch uses a single definition for each
>>of the macros, eliminating some redundant code.
>
> I have no problems with this (assuming it is right and it looks so on
> first glance).
>
> It will not apply to Linus's current tree, however, because of the IRQ
> rewrite that is now applied. If you pull his BK tree and diff against
> that, you should be OK... most notably, the preemption code has moved to
> preempt.h.

D'oh. Bad timing, I guess. I'll rediff against current BK.


--
Dave Hansen
[email protected]

2002-07-23 19:39:09

by Dave Hansen

[permalink] [raw]
Subject: Re: [PATCH] reduce code in generic spinlock.h

diff -Nru a/include/linux/spinlock.h b/include/linux/spinlock.h
--- a/include/linux/spinlock.h Tue Jul 23 13:56:42 2002
+++ b/include/linux/spinlock.h Tue Jul 23 13:56:42 2002
@@ -119,8 +119,6 @@

#endif /* !SMP */

-#ifdef CONFIG_PREEMPT
-
#define spin_lock(lock) \
do { \
preempt_disable(); \
@@ -147,20 +145,6 @@
#define write_unlock(lock) ({_raw_write_unlock(lock); preempt_enable();})
#define write_trylock(lock) ({preempt_disable();_raw_write_trylock(lock) ? \
1 : ({preempt_enable(); 0;});})
-
-#else
-
-#define spin_lock(lock) _raw_spin_lock(lock)
-#define spin_trylock(lock) _raw_spin_trylock(lock)
-#define spin_unlock(lock) _raw_spin_unlock(lock)
-#define spin_unlock_no_resched(lock) _raw_spin_unlock(lock)
-
-#define read_lock(lock) _raw_read_lock(lock)
-#define read_unlock(lock) _raw_read_unlock(lock)
-#define write_lock(lock) _raw_write_lock(lock)
-#define write_unlock(lock) _raw_write_unlock(lock)
-#define write_trylock(lock) _raw_write_trylock(lock)
-#endif

/* "lock on reference count zero" */
#ifndef ATOMIC_DEC_AND_LOCK


Attachments:
spinlock-cleanup-bk0723.diff (1.05 kB)