I want to know what is __read_mostly variable and its use when used in the linux kernel sources and i want to know that whether it can be used in normal c programs.
__read_mostly variables are grouped together in the final executable. This is thought to improve performance because it improves access time to those variables in SMP systems. This is because with reads only all processors on system can cache copies of those variables safely; however if a write occurs, one processor assumes ownership of that general memory area and this is a very expensive operation. This is referred to as cacheline bouncing, as each processor in turn assumes ownership of the cache line (= the memory area which contains the variable) in order to do their writes.
The unfortunate downside of __read_mostly variables is that the not-read-mostly variables, that is, "write_mostly"-variables are also clustered together and this may exacerbate the cacheline bouncing for them. This can have performance penalty too.
Look up the way __read_mostly is defined and copy the definition. It is likely some GCC attribute.