Re: PREEMPT is messing with everyone

2006-12-05 Thread Jan Engelhardt

> Yes, Compiler will remove it but this looks ugly and confusing.
>
> Why dont we use like this :-

Even more fugly.

> # ifdef CONFIG_PREEMPT
> # include 
> # endif
>
> #ifdef CONFIG_PREEMPT
> preempt_disable();
> #endif
>
> #ifdef CONFIG_PREEMPT
> preempt_enable();
> #endif
>

-`J'
-- 
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: PREEMPT is messing with everyone

2006-12-05 Thread Bill Davidsen

Jaswinder Singh wrote:

On 12/5/06, Michal Schmidt <[EMAIL PROTECTED]> 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 
>
> 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 
#endif

#ifdef CONFIG_PREEMPT
preempt_disable();
#endif

#ifdef CONFIG_PREEMPT
preempt_enable();
#endif



--
bill davidsen <[EMAIL PROTECTED]>
  CTO TMR Associates, Inc
  Doing interesting things with small computers since 1979
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: PREEMPT is messing with everyone

2006-12-05 Thread Michal Schmidt

Jaswinder Singh skrev:

Yes, Compiler will remove it but this looks ugly and confusing.

Why dont we use like this :-

#ifdef CONFIG_PREEMPT
#include 
#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

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: PREEMPT is messing with everyone

2006-12-05 Thread Jaswinder Singh

On 12/5/06, Michal Schmidt <[EMAIL PROTECTED]> 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 
>
> 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 
#endif

#ifdef CONFIG_PREEMPT
preempt_disable();
#endif

#ifdef CONFIG_PREEMPT
preempt_enable();
#endif

Regards,

Jaswinder Singh.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: PREEMPT is messing with everyone

2006-12-05 Thread Michal Schmidt

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 

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
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


PREEMPT is messing with everyone

2006-12-05 Thread Jaswinder Singh

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 

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.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


PREEMPT is messing with everyone

2006-12-05 Thread Jaswinder Singh

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.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: PREEMPT is messing with everyone

2006-12-05 Thread Michal Schmidt

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
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: PREEMPT is messing with everyone

2006-12-05 Thread Jaswinder Singh

On 12/5/06, Michal Schmidt [EMAIL PROTECTED] 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.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: PREEMPT is messing with everyone

2006-12-05 Thread Michal Schmidt

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

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: PREEMPT is messing with everyone

2006-12-05 Thread Bill Davidsen

Jaswinder Singh wrote:

On 12/5/06, Michal Schmidt [EMAIL PROTECTED] 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 [EMAIL PROTECTED]
  CTO TMR Associates, Inc
  Doing interesting things with small computers since 1979
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: PREEMPT is messing with everyone

2006-12-05 Thread Jan Engelhardt

 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'
-- 
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/