• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
register_one_node(int nid)49  static inline int register_one_node(int nid)
50  {
51  	return 0;
52  }
unregister_one_node(int nid)53  static inline int unregister_one_node(int nid)
54  {
55  	return 0;
56  }
register_cpu_under_node(unsigned int cpu,unsigned int nid)57  static inline int register_cpu_under_node(unsigned int cpu, unsigned int nid)
58  {
59  	return 0;
60  }
unregister_cpu_under_node(unsigned int cpu,unsigned int nid)61  static inline int unregister_cpu_under_node(unsigned int cpu, unsigned int nid)
62  {
63  	return 0;
64  }
register_mem_sect_under_node(struct memory_block * mem_blk,int nid)65  static inline int register_mem_sect_under_node(struct memory_block *mem_blk,
66  							int nid)
67  {
68  	return 0;
69  }
unregister_mem_sect_under_nodes(struct memory_block * mem_blk,unsigned long phys_index)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  
register_hugetlbfs_with_node(node_registration_func_t reg,node_registration_func_t unreg)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