Hi.. On Mon, Jul 16, 2012 at 6:22 PM, 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. like others had said, it means, the variables marked as read mostly are grouped into special section in kernel memory layout, named read_mostly. It's a subsection inside "data", which is I believe belong to initialized variable. By grouping this into single special region, it is hoped that you reduce (if possible none happen) cache invalidation. Such thing happen when bits in a cache line are updated. In such occasion, the whole cache line must be updated by re-fetching the related memory address. Thus, if all these bits are read only, once fetched, it will stays in cache line as long as possible. PS: there is no guarantee that this grouping will effectively works...that's why you need to align it to the size of cache line. -- regards, Mulyadi Santosa Freelance Linux trainer and consultant blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies