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 / asm-x86_64 / topology.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  1.9 KB  |  73 lines

  1. #ifndef _ASM_X86_64_TOPOLOGY_H
  2. #define _ASM_X86_64_TOPOLOGY_H
  3.  
  4.  
  5. #ifdef CONFIG_NUMA
  6.  
  7. #include <asm/mpspec.h>
  8. #include <asm/bitops.h>
  9.  
  10. /* Map the K8 CPU local memory controllers to a simple 1:1 CPU:NODE topology */
  11.  
  12. extern cpumask_t cpu_online_map;
  13.  
  14. extern unsigned char cpu_to_node[];
  15. extern cpumask_t     node_to_cpumask[];
  16.  
  17. #ifdef CONFIG_ACPI_NUMA
  18. extern int __node_distance(int, int);
  19. #define node_distance(a,b) __node_distance(a,b)
  20. /* #else fallback version */
  21. #endif
  22.  
  23. #define cpu_to_node(cpu)        (cpu_to_node[cpu])
  24. #define parent_node(node)        (node)
  25. #define node_to_first_cpu(node)     (first_cpu(node_to_cpumask[node]))
  26. #define node_to_cpumask(node)        (node_to_cpumask[node])
  27. #define pcibus_to_node(bus)        ((long)(bus->sysdata))    
  28. #define pcibus_to_cpumask(bus)        node_to_cpumask(pcibus_to_node(bus));
  29.  
  30. #define numa_node_id()            read_pda(nodenumber)
  31.  
  32. /* sched_domains SD_NODE_INIT for x86_64 machines */
  33. #define SD_NODE_INIT (struct sched_domain) {        \
  34.     .span            = CPU_MASK_NONE,    \
  35.     .parent            = NULL,            \
  36.     .groups            = NULL,            \
  37.     .min_interval        = 8,            \
  38.     .max_interval        = 32,            \
  39.     .busy_factor        = 32,            \
  40.     .imbalance_pct        = 125,            \
  41.     .cache_nice_tries    = 2,            \
  42.     .busy_idx        = 3,            \
  43.     .idle_idx        = 2,            \
  44.     .newidle_idx        = 0,             \
  45.     .wake_idx        = 1,            \
  46.     .forkexec_idx        = 1,            \
  47.     .per_cpu_gain        = 100,            \
  48.     .flags            = SD_LOAD_BALANCE    \
  49.                 | SD_BALANCE_FORK    \
  50.                 | SD_BALANCE_EXEC    \
  51.                 | SD_WAKE_BALANCE,    \
  52.     .last_balance        = jiffies,        \
  53.     .balance_interval    = 1,            \
  54.     .nr_balance_failed    = 0,            \
  55. }
  56.  
  57. #endif
  58.  
  59. #ifdef CONFIG_SMP
  60. #define topology_physical_package_id(cpu)                \
  61.     (phys_proc_id[cpu] == BAD_APICID ? -1 : phys_proc_id[cpu])
  62. #define topology_core_id(cpu)                        \
  63.     (cpu_core_id[cpu] == BAD_APICID ? 0 : cpu_core_id[cpu])
  64. #define topology_core_siblings(cpu)        (cpu_core_map[cpu])
  65. #define topology_thread_siblings(cpu)        (cpu_sibling_map[cpu])
  66. #endif
  67.  
  68. #include <asm-generic/topology.h>
  69.  
  70. extern cpumask_t cpu_coregroup_map(int cpu);
  71.  
  72. #endif
  73.