|
|
|
Re: good explanation of __read_mostly, __init, __exit macros, | |
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] | |
On 16 July 2012 12:22, Aft nix <aftnix@xxxxxxxxx> 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@xxxxxxxxxxxxxxxxx
> 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
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
[Newbies FAQ] [Linux Kernel Development] [IETF Annouce] [Git] [Networking] [Security] [Bugtraq] [Photo] [Yosemite] [MIPS Linux] [ARM Linux] [Linux Security] [Linux Networking] [Linux RAID] [Linux SCSI] [Linux ACPI]
![]() |
![]() |