File: /Users/paulross/dev/linux/linux-3.13/include/linux/cache.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       1: #ifndef __LINUX_CACHE_H
       2: #define __LINUX_CACHE_H
       3: 
       4: #include <linux/kernel.h>
       5: #include <asm/cache.h>
       6: 
       7: #ifndef L1_CACHE_ALIGN
       8: #define L1_CACHE_ALIGN(x) ALIGN(x, L1_CACHE_BYTES)
       9: #endif
      10: 
      11: #ifndef SMP_CACHE_BYTES
      12: #define SMP_CACHE_BYTES L1_CACHE_BYTES
      13: #endif
      14: 
      15: #ifndef __read_mostly
      16: #define __read_mostly
      17: #endif
      18: 
      19: #ifndef ____cacheline_aligned
      20: #define ____cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES)))
      21: #endif
      22: 
      23: #ifndef ____cacheline_aligned_in_smp
      24: #ifdef CONFIG_SMP
      25: #define ____cacheline_aligned_in_smp ____cacheline_aligned
      26: #else
      27: #define ____cacheline_aligned_in_smp
      28: #endif /* CONFIG_SMP */
      29: #endif
      30: 
      31: #ifndef __cacheline_aligned
      32: #define __cacheline_aligned                    \
      33:   __attribute__((__aligned__(SMP_CACHE_BYTES),            \
      34:          __section__(".data..cacheline_aligned")))
      35: #endif /* __cacheline_aligned */
      36: 
      37: #ifndef __cacheline_aligned_in_smp
      38: #ifdef CONFIG_SMP
      39: #define __cacheline_aligned_in_smp __cacheline_aligned
      40: #else
      41: #define __cacheline_aligned_in_smp
      42: #endif /* CONFIG_SMP */
      43: #endif
      44: 
      45: /*
      46:  * The maximum alignment needed for some critical structures
      47:  * These could be inter-node cacheline sizes/L3 cacheline
      48:  * size etc.  Define this in asm/cache.h for your arch
      49:  */
      50: #ifndef INTERNODE_CACHE_SHIFT
      51: #define INTERNODE_CACHE_SHIFT L1_CACHE_SHIFT
      52: #endif
      53: 
      54: #if !defined(____cacheline_internodealigned_in_smp)
      55: #if defined(CONFIG_SMP)
      56: #define ____cacheline_internodealigned_in_smp \
      57:     __attribute__((__aligned__(1 << (INTERNODE_CACHE_SHIFT))))
      58: #else
      59: #define ____cacheline_internodealigned_in_smp
      60: #endif
      61: #endif
      62: 
      63: #ifndef CONFIG_ARCH_HAS_CACHE_LINE_SIZE
      64: #define cache_line_size()    L1_CACHE_BYTES
      65: #endif
      66: 
      67: #endif /* __LINUX_CACHE_H */
      68: