Re: [Question] For what stand's __initdata, __devinit etc. ?

From: René Bolldorf
Date: Wed Jan 13 2010 - 12:12:30 EST

On 01/13/10 17:37, Stefan Richter wrote:
Tilman Schmidt wrote:
Am 2010-01-13 00:42 schrieb Henrique de Moraes Holschuh:
On Tue, 12 Jan 2010, René Bolldorf wrote:
Do we really need this?
It will be nice if someone can me explain this.

That's far from complete. It does not, for example, mention __devinit.

This wiki contains also somewhat misleadingly worded text: "But why
must you use these macros ?" This should read: "But why would you want
to use these macros?"

Answer: They are a micro-optimization which allows the kernel to free
memory that was occupied by this code at some point, because that code
won't be used after that point anymore. (In case of exit macros: These
are hints to discard some code from a build in case of certain kernel
configurations.) These macros only affect code which is statically
linked into the kernel.

Some macros, like for example __devinit, have so obscure uses and
marginal benefits that a normal developer should not bother about them.
__devinit in particular does not have any effect at all --- except if
CONFIG_HOTPLUG is not defined. This may happen in configurations for
embedded systems. But the majority of device drivers that you can find
in the kernel tree are irrelevant (i.e. configured off) on such systems

Some more information on these macros can be found in Corbet, Rubini,
Kroah-Hartman: Linux Device Drivers, 3rd edition a.k.a. LDD3, which is
also gratis available on the Web.

Thanks @all :-)
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at