File: /Users/paulross/dev/linux/linux-3.13/include/linux/node.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: /*
       2:  * include/linux/node.h - generic node definition
       3:  *
       4:  * This is mainly for topological representation. We define the 
       5:  * basic 'struct node' here, which can be embedded in per-arch 
       6:  * definitions of processors.
       7:  *
       8:  * Basic handling of the devices is done in drivers/base/node.c
       9:  * and system devices are handled in drivers/base/sys.c. 
      10:  *
      11:  * Nodes are exported via driverfs in the class/node/devices/
      12:  * directory. 
      13:  */
      14: #ifndef _LINUX_NODE_H_
      15: #define _LINUX_NODE_H_
      16: 
      17: #include <linux/device.h>
      18: #include <linux/cpumask.h>
      19: #include <linux/workqueue.h>
      20: 
      21: struct node {
      22:     struct device    dev;
      23: 
      24: #if defined(CONFIG_MEMORY_HOTPLUG_SPARSE) && defined(CONFIG_HUGETLBFS)
      25:     struct work_struct    node_work;
      26: #endif
      27: };
      28: 
      29: struct memory_block;
      30: extern struct node *node_devices[];
      31: typedef  void (*node_registration_func_t)(struct node *);
      32: 
      33: extern void unregister_node(struct node *node);
      34: #ifdef CONFIG_NUMA
      35: extern int register_one_node(int nid);
      36: extern void unregister_one_node(int nid);
      37: extern int register_cpu_under_node(unsigned int cpu, unsigned int nid);
      38: extern int unregister_cpu_under_node(unsigned int cpu, unsigned int nid);
      39: extern int register_mem_sect_under_node(struct memory_block *mem_blk,
      40:                         int nid);
      41: extern int unregister_mem_sect_under_nodes(struct memory_block *mem_blk,
      42:                        unsigned long phys_index);
      43: 
      44: #ifdef CONFIG_HUGETLBFS
      45: extern void register_hugetlbfs_with_node(node_registration_func_t doregister,
      46:                      node_registration_func_t unregister);
      47: #endif
      48: #else
      49: static inline int register_one_node(int nid)
      50: {
      51:     return 0;
      52: }
      53: static inline int unregister_one_node(int nid)
      54: {
      55:     return 0;
      56: }
      57: static inline int register_cpu_under_node(unsigned int cpu, unsigned int nid)
      58: {
      59:     return 0;
      60: }
      61: static inline int unregister_cpu_under_node(unsigned int cpu, unsigned int nid)
      62: {
      63:     return 0;
      64: }
      65: static inline int register_mem_sect_under_node(struct memory_block *mem_blk,
      66:                             int nid)
      67: {
      68:     return 0;
      69: }
      70: static inline int unregister_mem_sect_under_nodes(struct memory_block *mem_blk,
      71:                           unsigned long phys_index)
      72: {
      73:     return 0;
      74: }
      75: 
      76: static inline void register_hugetlbfs_with_node(node_registration_func_t reg,
      77:                         node_registration_func_t unreg)
      78: {
      79: }
      80: #endif
      81: 
      82: #define to_node(device) container_of(device, struct node, dev)
      83: 
      84: #endif /* _LINUX_NODE_H_ */
      85: