File: /Users/paulross/dev/linux/linux-3.13/arch/x86/include/asm/numa.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 _ASM_X86_NUMA_H
       2: #define _ASM_X86_NUMA_H
       3: 
       4: #include <linux/nodemask.h>
       5: 
       6: #include <asm/topology.h>
       7: #include <asm/apicdef.h>
       8: 
       9: #ifdef CONFIG_NUMA
      10: 
      11: #define NR_NODE_MEMBLKS        (MAX_NUMNODES*2)
      12: #define ZONE_ALIGN (1UL << (MAX_ORDER+PAGE_SHIFT))
      13: 
      14: /*
      15:  * Too small node sizes may confuse the VM badly. Usually they
      16:  * result from BIOS bugs. So dont recognize nodes as standalone
      17:  * NUMA entities that have less than this amount of RAM listed:
      18:  */
      19: #define NODE_MIN_SIZE (4*1024*1024)
      20: 
      21: extern int numa_off;
      22: 
      23: /*
      24:  * __apicid_to_node[] stores the raw mapping between physical apicid and
      25:  * node and is used to initialize cpu_to_node mapping.
      26:  *
      27:  * The mapping may be overridden by apic->numa_cpu_node() on 32bit and thus
      28:  * should be accessed by the accessors - set_apicid_to_node() and
      29:  * numa_cpu_node().
      30:  */
      31: extern s16 __apicid_to_node[MAX_LOCAL_APIC];
      32: extern nodemask_t numa_nodes_parsed __initdata;
      33: 
      34: extern int __init numa_add_memblk(int nodeid, u64 start, u64 end);
      35: extern void __init numa_set_distance(int from, int to, int distance);
      36: 
      37: static inline void set_apicid_to_node(int apicid, s16 node)
      38: {
      39:     __apicid_to_node[apicid] = node;
      40: }
      41: 
      42: extern int numa_cpu_node(int cpu);
      43: 
      44: #else    /* CONFIG_NUMA */
      45: static inline void set_apicid_to_node(int apicid, s16 node)
      46: {
      47: }
      48: 
      49: static inline int numa_cpu_node(int cpu)
      50: {
      51:     return NUMA_NO_NODE;
      52: }
      53: #endif    /* CONFIG_NUMA */
      54: 
      55: #ifdef CONFIG_X86_32
      56: # include <asm/numa_32.h>
      57: #endif
      58: 
      59: #ifdef CONFIG_NUMA
      60: extern void numa_set_node(int cpu, int node);
      61: extern void numa_clear_node(int cpu);
      62: extern void __init init_cpu_to_node(void);
      63: extern void numa_add_cpu(int cpu);
      64: extern void numa_remove_cpu(int cpu);
      65: #else    /* CONFIG_NUMA */
      66: static inline void numa_set_node(int cpu, int node)    { }
      67: static inline void numa_clear_node(int cpu)        { }
      68: static inline void init_cpu_to_node(void)        { }
      69: static inline void numa_add_cpu(int cpu)        { }
      70: static inline void numa_remove_cpu(int cpu)        { }
      71: #endif    /* CONFIG_NUMA */
      72: 
      73: #ifdef CONFIG_DEBUG_PER_CPU_MAPS
      74: void debug_cpumask_set_cpu(int cpu, int node, bool enable);
      75: #endif
      76: 
      77: #ifdef CONFIG_NUMA_EMU
      78: #define FAKE_NODE_MIN_SIZE    ((u64)32 << 20)
      79: #define FAKE_NODE_MIN_HASH_MASK    (~(FAKE_NODE_MIN_SIZE - 1UL))
      80: void numa_emu_cmdline(char *);
      81: #endif /* CONFIG_NUMA_EMU */
      82: 
      83: #endif    /* _ASM_X86_NUMA_H */
      84: