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