home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / powerpc / include / asm / topology.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.4 KB  |  118 lines

  1. #ifndef _ASM_POWERPC_TOPOLOGY_H
  2. #define _ASM_POWERPC_TOPOLOGY_H
  3. #ifdef __KERNEL__
  4.  
  5.  
  6. struct sys_device;
  7. struct device_node;
  8.  
  9. #ifdef CONFIG_NUMA
  10.  
  11. #include <asm/mmzone.h>
  12.  
  13. static inline int cpu_to_node(int cpu)
  14. {
  15.     return numa_cpu_lookup_table[cpu];
  16. }
  17.  
  18. #define parent_node(node)    (node)
  19.  
  20. static inline cpumask_t node_to_cpumask(int node)
  21. {
  22.     return numa_cpumask_lookup_table[node];
  23. }
  24.  
  25. static inline int node_to_first_cpu(int node)
  26. {
  27.     cpumask_t tmp;
  28.     tmp = node_to_cpumask(node);
  29.     return first_cpu(tmp);
  30. }
  31.  
  32. int of_node_to_nid(struct device_node *device);
  33.  
  34. struct pci_bus;
  35. #ifdef CONFIG_PCI
  36. extern int pcibus_to_node(struct pci_bus *bus);
  37. #else
  38. static inline int pcibus_to_node(struct pci_bus *bus)
  39. {
  40.     return -1;
  41. }
  42. #endif
  43.  
  44. #define pcibus_to_cpumask(bus)    (pcibus_to_node(bus) == -1 ? \
  45.                     CPU_MASK_ALL : \
  46.                     node_to_cpumask(pcibus_to_node(bus)) \
  47.                 )
  48.  
  49. /* sched_domains SD_NODE_INIT for PPC64 machines */
  50. #define SD_NODE_INIT (struct sched_domain) {        \
  51.     .span            = CPU_MASK_NONE,    \
  52.     .parent            = NULL,            \
  53.     .child            = NULL,            \
  54.     .groups            = NULL,            \
  55.     .min_interval        = 8,            \
  56.     .max_interval        = 32,            \
  57.     .busy_factor        = 32,            \
  58.     .imbalance_pct        = 125,            \
  59.     .cache_nice_tries    = 1,            \
  60.     .busy_idx        = 3,            \
  61.     .idle_idx        = 1,            \
  62.     .newidle_idx        = 2,            \
  63.     .wake_idx        = 1,            \
  64.     .flags            = SD_LOAD_BALANCE    \
  65.                 | SD_BALANCE_EXEC    \
  66.                 | SD_BALANCE_NEWIDLE    \
  67.                 | SD_WAKE_IDLE        \
  68.                 | SD_SERIALIZE        \
  69.                 | SD_WAKE_BALANCE,    \
  70.     .last_balance        = jiffies,        \
  71.     .balance_interval    = 1,            \
  72.     .nr_balance_failed    = 0,            \
  73. }
  74.  
  75. extern void __init dump_numa_cpu_topology(void);
  76.  
  77. extern int sysfs_add_device_to_node(struct sys_device *dev, int nid);
  78. extern void sysfs_remove_device_from_node(struct sys_device *dev, int nid);
  79.  
  80. #else
  81.  
  82. static inline int of_node_to_nid(struct device_node *device)
  83. {
  84.     return 0;
  85. }
  86.  
  87. static inline void dump_numa_cpu_topology(void) {}
  88.  
  89. static inline int sysfs_add_device_to_node(struct sys_device *dev, int nid)
  90. {
  91.     return 0;
  92. }
  93.  
  94. static inline void sysfs_remove_device_from_node(struct sys_device *dev,
  95.                         int nid)
  96. {
  97. }
  98.  
  99. #endif /* CONFIG_NUMA */
  100.  
  101. #include <asm-generic/topology.h>
  102.  
  103. #ifdef CONFIG_SMP
  104. #include <asm/cputable.h>
  105. #define smt_capable()        (cpu_has_feature(CPU_FTR_SMT))
  106.  
  107. #ifdef CONFIG_PPC64
  108. #include <asm/smp.h>
  109.  
  110. #define topology_thread_siblings(cpu)    (per_cpu(cpu_sibling_map, cpu))
  111. #define topology_core_siblings(cpu)    (per_cpu(cpu_core_map, cpu))
  112. #define topology_core_id(cpu)        (cpu_to_core_id(cpu))
  113. #endif
  114. #endif
  115.  
  116. #endif /* __KERNEL__ */
  117. #endif    /* _ASM_POWERPC_TOPOLOGY_H */
  118.