On Fri, Feb 18, 2011 at 12:16 PM, John Mahoney <jmahoney@xxxxxxxx> wrote: > On Fri, Feb 18, 2011 at 9:28 AM, loody <miloody@xxxxxxxxx> wrote: >> hi : >> >> >> 2011/2/18 John Mahoney <jmahoney@xxxxxxxx>: >>> On Thu, Feb 17, 2011 at 9:17 AM, loody <miloody@xxxxxxxxx> wrote: >>>> hi :-) >>>> >>>> 2011/2/16 Mulyadi Santosa <mulyadi.santosa@xxxxxxxxx>: >>>>> Hi :) >>>>> >>>>> On Wed, Feb 16, 2011 at 12:59, Rajat Jain <rajatjain@xxxxxxxxxxx> wrote: >>>>>> Hello loody, >>>>>> >>>>>>> 1. in kernel/trace, I always see "__read_mostly" at the end of >>>>>>> parameter is that a compiler optimization parameter? >>>>>> >>>>>> Yes, it is a hint to the compiler that the parameter is mostly read, thus if the compiler has to make a decision between optimizing one of the read / write paths, it will optimize the read path even at the expense of write path. >>>>> >>>>> >>>>> To be precise, they will be grouped into same cache line as much as >>>>> possible. By doing so, those cache line won't be invalidated so often >>>>> (keeping them "hot" :) hehehhe ) >>>> >>>> I cannot find it on the gcc manual. >>>> is it a option in kernel for kernel usage? >>>> if so, where I can found them. >>>> If not, can I use it on normal user level program? >>>> >>> >>> It is a macro defined for x86 as: >>> >>> #define __read_mostly __attribute__((__section__(".data..read_mostly"))) >>> >>> http://lxr.linux.no/linux+v2.6.37/arch/x86/include/asm/cache.h >> I found where you pointed out but I try to find out where is it in the >> mips arch. > > It looks pretty new for mips and you may have older code. > > $ git log -p cache.h > commit 1befdd5536e1500371f7f884d0f0ae528a519333 > Author: David Daney <ddaney@xxxxxxxxxxxxxxxxxx> > Date: Thu Oct 14 12:36:49 2010 -0700 > > MIPS: Implement __read_mostly > commit 1befdd5536e1500371f7f884d0f0ae528a519333 > Author: David Daney <ddaney@xxxxxxxxxxxxxxxxxx> > Date: Thu Oct 14 12:36:49 2010 -0700 > > MIPS: Implement __read_mostly > > Just do what everyone else is doing by placing __read_mostly things in > the .data.read_mostly section. > > mips_io_port_base can not be read-only (const) and writable > (__read_mostly) at the same time. One of them has to go, so I chose > to eliminate the __read_mostly. It will still get stuck in a portion > of memory that is not adjacent to things that are written, and thus > not be on a dirty cache line, for whatever that is worth. > > Signed-off-by: David Daney <ddaney@xxxxxxxxxxxxxxxxxx> > To: linux-mips@xxxxxxxxxxxxxx > Patchwork: http://patchwork.linux-mips.org/patch/1702/ > Signed-off-by: Ralf Baechle <ralf@xxxxxxxxxxxxxx> I left off some the end see below. diff --git a/arch/mips/include/asm/cache.h b/arch/mips/include/asm/cache.h index 37f175c..650ac9b 100644 --- a/arch/mips/include/asm/cache.h +++ b/arch/mips/include/asm/cache.h @@ -17,4 +17,6 @@ #define SMP_CACHE_SHIFT L1_CACHE_SHIFT #define SMP_CACHE_BYTES L1_CACHE_BYTES +#define __read_mostly __attribute__((__section__(".data.read_mostly"))) + #endif /* _ASM_CACHE_H */ _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies