home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / linux / cache.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  1.5 KB  |  64 lines

  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. #endif /* __LINUX_CACHE_H */
  64.