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: