LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* PREEMPT is messing with everyone
@ 2006-12-05 14:10 Jaswinder Singh
2006-12-05 15:08 ` Michal Schmidt
0 siblings, 1 reply; 6+ messages in thread
From: Jaswinder Singh @ 2006-12-05 14:10 UTC (permalink / raw)
To: linux-kernel
Hi,
preempt stuff SHOULD only stay in #ifdef CONFIG_PREEMP_* , but it is
messing with everyone even though not defined.
e.g.
1. linux-2.6.19/kernel/spinlock.c
Line 18: #include <linux/preempt.h>
Line 26: preempt_disable();
Line 32: preempt_disable();
and so on .
2. linux-2.6.19/kernel/sched.c
Line 1096: int preempted;
Line 1104: preempted = !task_running(rq, p);
Line 1106: if (preempted)
Line 2059: if (TASK_PREEMPTS_CURR(p, this_rq))
Line 3355: current->comm, preempt_count(), current->pid);
Line 3342: preempt_disable();
Line 3375: if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) {
Line 3471: preempt_enable_no_resched();
3. linux-2.6.19/kernel/timer.c
Line 444: int preempt_count = preempt_count();
Line 447: if (preempt_count != preempt_count()) {
4. linux-2.6.19/arch/i386/kernel/entry.S
Line 240: preempt_stop
5. linux-2.6.19/arch/i386/irq.c
Line 111: irqctx->tinfo.preempt_count =
Line 112: (irqctx->tinfo.preempt_count & ~SOFTIRQ_MASK) |
Line 113: (curctx->tinfo.preempt_count & SOFTIRQ_MASK);
Line 160: irqctx->tinfo.preempt_count = HARDIRQ_OFFSET;
and so on.
Similarly unnecessary preempt code is also written in other important files.
70 to 80 % of this code is removed when compiled.
but 20 to 30 % code left in binary kernel image.
Why Linux kernel is wasting its resources which is not defined at all.
Any solution ?
Thank you,
Best Regards,
Jaswinder Singh.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: PREEMPT is messing with everyone
2006-12-05 14:10 PREEMPT is messing with everyone Jaswinder Singh
@ 2006-12-05 15:08 ` Michal Schmidt
2006-12-05 16:50 ` Jaswinder Singh
0 siblings, 1 reply; 6+ messages in thread
From: Michal Schmidt @ 2006-12-05 15:08 UTC (permalink / raw)
To: Jaswinder Singh; +Cc: linux-kernel
Jaswinder Singh wrote:
> Hi,
>
> preempt stuff SHOULD only stay in #ifdef CONFIG_PREEMP_* , but it is
> messing with everyone even though not defined.
>
> e.g.
>
> 1. linux-2.6.19/kernel/spinlock.c
>
> Line 18: #include <linux/preempt.h>
>
> Line 26: preempt_disable();
>
> Line 32: preempt_disable();
>
> and so on .
Don't worry. These compile into "do { } while (0)" (i.e. nothing) when
CONFIG_PREEMPT is not set.
>
> 2. linux-2.6.19/kernel/sched.c
>
> Line 1096: int preempted;
>
> Line 1104: preempted = !task_running(rq, p);
>
> Line 1106: if (preempted)
>
> Line 2059: if (TASK_PREEMPTS_CURR(p, this_rq))
Linux always does preemptive multitasking of user tasks. These have
nothing to do with CONFIG_PREEMPT.
> Line 3355: current->comm, preempt_count(), current->pid);
>
> Line 3342: preempt_disable();
>
> Line 3375: if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) {
preempt_count() is useful in !CONFIG_PREEMPT kernels too. It stores
information about the current context (hardirq, softirq, ...).
> [...]
>
> 70 to 80 % of this code is removed when compiled.
>
> but 20 to 30 % code left in binary kernel image.
>
> Why Linux kernel is wasting its resources which is not defined at all.
I don't think that's the case.
> Any solution ?
>
> Thank you,
>
> Best Regards,
>
> Jaswinder Singh.
Michal
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: PREEMPT is messing with everyone
2006-12-05 15:08 ` Michal Schmidt
@ 2006-12-05 16:50 ` Jaswinder Singh
2006-12-05 16:58 ` Michal Schmidt
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Jaswinder Singh @ 2006-12-05 16:50 UTC (permalink / raw)
To: Michal Schmidt; +Cc: linux-kernel
On 12/5/06, Michal Schmidt <xschmi00@stud.feec.vutbr.cz> wrote:
> Jaswinder Singh wrote:
> > Hi,
> >
> > preempt stuff SHOULD only stay in #ifdef CONFIG_PREEMP_* , but it is
> > messing with everyone even though not defined.
> >
> > e.g.
> >
> > 1. linux-2.6.19/kernel/spinlock.c
> >
> > Line 18: #include <linux/preempt.h>
> >
> > Line 26: preempt_disable();
> >
> > Line 32: preempt_disable();
> >
> > and so on .
>
> Don't worry. These compile into "do { } while (0)" (i.e. nothing) when
> CONFIG_PREEMPT is not set.
>
Yes, Compiler will remove it but this looks ugly and confusing.
Why dont we use like this :-
#ifdef CONFIG_PREEMPT
#include <linux/preempt.h>
#endif
#ifdef CONFIG_PREEMPT
preempt_disable();
#endif
#ifdef CONFIG_PREEMPT
preempt_enable();
#endif
Regards,
Jaswinder Singh.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: PREEMPT is messing with everyone
2006-12-05 16:50 ` Jaswinder Singh
@ 2006-12-05 16:58 ` Michal Schmidt
2006-12-05 19:55 ` Bill Davidsen
2006-12-05 20:30 ` Jan Engelhardt
2 siblings, 0 replies; 6+ messages in thread
From: Michal Schmidt @ 2006-12-05 16:58 UTC (permalink / raw)
To: Jaswinder Singh; +Cc: linux-kernel
Jaswinder Singh skrev:
> Yes, Compiler will remove it but this looks ugly and confusing.
>
> Why dont we use like this :-
>
> #ifdef CONFIG_PREEMPT
> #include <linux/preempt.h>
> #endif
>
> #ifdef CONFIG_PREEMPT
> preempt_disable();
> #endif
>
> #ifdef CONFIG_PREEMPT
> preempt_enable();
> #endif
Surely you're joking.
It is much more readable and maintainable to hide the #ifdef-hackery in
header files than to clutter the *.c files.
Michal
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: PREEMPT is messing with everyone
2006-12-05 16:50 ` Jaswinder Singh
2006-12-05 16:58 ` Michal Schmidt
@ 2006-12-05 19:55 ` Bill Davidsen
2006-12-05 20:30 ` Jan Engelhardt
2 siblings, 0 replies; 6+ messages in thread
From: Bill Davidsen @ 2006-12-05 19:55 UTC (permalink / raw)
To: Jaswinder Singh; +Cc: linux-kernel
Jaswinder Singh wrote:
> On 12/5/06, Michal Schmidt <xschmi00@stud.feec.vutbr.cz> wrote:
>> Jaswinder Singh wrote:
>> > Hi,
>> >
>> > preempt stuff SHOULD only stay in #ifdef CONFIG_PREEMP_* , but it is
>> > messing with everyone even though not defined.
>> >
>> > e.g.
>> >
>> > 1. linux-2.6.19/kernel/spinlock.c
>> >
>> > Line 18: #include <linux/preempt.h>
>> >
>> > Line 26: preempt_disable();
>> >
>> > Line 32: preempt_disable();
>> >
>> > and so on .
>>
>> Don't worry. These compile into "do { } while (0)" (i.e. nothing) when
>> CONFIG_PREEMPT is not set.
>>
>
> Yes, Compiler will remove it but this looks ugly and confusing.
>
> Why dont we use like this :-
Because it's ugly and confusing.
>
> #ifdef CONFIG_PREEMPT
> #include <linux/preempt.h>
> #endif
>
> #ifdef CONFIG_PREEMPT
> preempt_disable();
> #endif
>
> #ifdef CONFIG_PREEMPT
> preempt_enable();
> #endif
--
bill davidsen <davidsen@tmr.com>
CTO TMR Associates, Inc
Doing interesting things with small computers since 1979
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: PREEMPT is messing with everyone
2006-12-05 16:50 ` Jaswinder Singh
2006-12-05 16:58 ` Michal Schmidt
2006-12-05 19:55 ` Bill Davidsen
@ 2006-12-05 20:30 ` Jan Engelhardt
2 siblings, 0 replies; 6+ messages in thread
From: Jan Engelhardt @ 2006-12-05 20:30 UTC (permalink / raw)
To: Jaswinder Singh; +Cc: Michal Schmidt, linux-kernel
> Yes, Compiler will remove it but this looks ugly and confusing.
>
> Why dont we use like this :-
Even more fugly.
> # ifdef CONFIG_PREEMPT
> # include <linux/preempt.h>
> # endif
>
> #ifdef CONFIG_PREEMPT
> preempt_disable();
> #endif
>
> #ifdef CONFIG_PREEMPT
> preempt_enable();
> #endif
>
-`J'
--
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2006-12-05 20:30 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-12-05 14:10 PREEMPT is messing with everyone Jaswinder Singh
2006-12-05 15:08 ` Michal Schmidt
2006-12-05 16:50 ` Jaswinder Singh
2006-12-05 16:58 ` Michal Schmidt
2006-12-05 19:55 ` Bill Davidsen
2006-12-05 20:30 ` Jan Engelhardt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).