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 * Per-node interfaces can be implemented using a struct device_interface. 15 * See the following for how to do this: 16 * - drivers/base/intf.c 17 * - Documentation/driver-model/interface.txt 18 */ 19 #ifndef _LINUX_NODE_H_ 20 #define _LINUX_NODE_H_ 21 22 #include <linux/sysdev.h> 23 #include <linux/cpumask.h> 24 25 struct node { 26 struct sys_device sysdev; 27 }; 28 29 extern struct node node_devices[]; 30 31 extern int register_node(struct node *, int, struct node *); 32 extern void unregister_node(struct node *node); 33 #ifdef CONFIG_NUMA 34 extern int register_one_node(int nid); 35 extern void unregister_one_node(int nid); 36 extern int register_cpu_under_node(unsigned int cpu, unsigned int nid); 37 extern int unregister_cpu_under_node(unsigned int cpu, unsigned int nid); 38 #else 39 static inline int register_one_node(int nid) 40 { 41 return 0; 42 } 43 static inline int unregister_one_node(int nid) 44 { 45 return 0; 46 } 47 static inline int register_cpu_under_node(unsigned int cpu, unsigned int nid) 48 { 49 return 0; 50 } 51 static inline int unregister_cpu_under_node(unsigned int cpu, unsigned int nid) 52 { 53 return 0; 54 } 55 #endif 56 57 #define to_node(sys_device) container_of(sys_device, struct node, sysdev) 58 59 #endif /* _LINUX_NODE_H_ */ 60