good explanation of __read_mostly, __init, __exit macros,

Filipe Rinaldi filipe.rinaldi at gmail.com
Mon Jul 16 08:29:57 EDT 2012


On 16 July 2012 12:22, Aft nix <aftnix at gmail.com> wrote:
> Hi,
>
> The macro expansion of __read_mostly :
>
> #define __read_mostly __attribute__((__section__(".data..read_mostly"))
>
> This one is from cache.h
>
> __init:
> #define __init          __section(.init.text) __cold notrace
>
> from init.h
>
> __exit:
>
> #define __exit          __section(.exit.text) __exitused __cold notrace
>
> After searching through net i have not found any good explanation of
> what is happening there.
>
> Additonal question : I have heard about various "linker magic"
> employed in kernel development. Any information
> regarding this will be wonderful.
>
> cheers
>
> --
> -aft
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies


Hi Aft,

These macros are used to assign a function or initialised variable
content to a specific section in memory. If you search for the linker
script of any architecture (*.lds.S files), you will see that these
variables and functions are placed in specific sections with names
like "__init_begin" and "__init_end". After the initialisation, Linux
can re-use for example the "init" memory.

-Filipe



More information about the Kernelnewbies mailing list