2009-03-27 10:31:35

by Dmitri Vorobiev

[permalink] [raw]
Subject: strange code in include/linux/kernel_stat.h

Hi,

Depending on whether the CONFIG_GENERIC_HARDIRQS option is enabled or not, the header file include/linux/kernel_stat.h defines the following two entities:

- the macro kstat_irqs_this_cpu for the case when CONFIG_GENERIC_HARDIRQS is set:

#define kstat_irqs_this_cpu(DESC) \
((DESC)->kstat_irqs[smp_processor_id()])

- another macro with the same name as the macro above but for the case CONFIG_GENERIC_HARDIRQS is not set:

#define kstat_irqs_this_cpu(irq) \
(kstat_this_cpu.irqs[irq])

Apparently, it is assumed that the types for the macro argument are different, and depend on the value of CONFIG_GENERIC_HARDIRQS. Is this intentional?

Thanks,
Dmitri


2009-04-02 11:06:15

by Dmitri Vorobiev

[permalink] [raw]
Subject: Re: strange code in include/linux/kernel_stat.h

Dmitri Vorobiev wrote:
> Hi,
>
> Depending on whether the CONFIG_GENERIC_HARDIRQS option is enabled or not, the header file include/linux/kernel_stat.h defines the following two entities:
>
> - the macro kstat_irqs_this_cpu for the case when CONFIG_GENERIC_HARDIRQS is set:
>
> #define kstat_irqs_this_cpu(DESC) \
> ((DESC)->kstat_irqs[smp_processor_id()])
>
> - another macro with the same name as the macro above but for the case CONFIG_GENERIC_HARDIRQS is not set:
>
> #define kstat_irqs_this_cpu(irq) \
> (kstat_this_cpu.irqs[irq])
>
> Apparently, it is assumed that the types for the macro argument are different, and depend on the value of CONFIG_GENERIC_HARDIRQS. Is this intentional?
>

I still would like to know what's going on there. Anyone knowledgeable out there, please?

Dmitri

> Thanks,
> Dmitri
>
> --
> 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/