aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base
diff options
context:
space:
mode:
authorYasunori Goto <y-goto@jp.fujitsu.com>2006-06-27 05:53:38 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-27 20:32:36 -0400
commit0fc44159bfcb5b0afa178f9c3f50db23aebc76ff (patch)
treed87e47c0f5e6b2eff1d9113d3495d185924734d9 /drivers/base
parent1f04bbd2d396a701c5af2e5b92bad896c2550c16 (diff)
[PATCH] Register sysfs file for hotplugged new node
When new node becomes enable by hot-add, new sysfs file must be created for new node. So, if new node is enabled by add_memory(), register_one_node() is called to create it. In addition, I386's arch_register_node() and a part of register_nodes() of powerpc are consolidated to register_one_node() as a generic_code(). This is tested by Tiger4(IPF) with node hot-plug emulation. Signed-off-by: Keiichiro Tokunaga <tokuanga.keiich@jp.fujitsu.com> Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/base')
-rw-r--r--drivers/base/node.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/base/node.c b/drivers/base/node.c
index c80c3aeed004..cbd0f62b4870 100644
--- a/drivers/base/node.c
+++ b/drivers/base/node.c
@@ -190,6 +190,31 @@ void unregister_node(struct node *node)
190 sysdev_unregister(&node->sysdev); 190 sysdev_unregister(&node->sysdev);
191} 191}
192 192
193struct node node_devices[MAX_NUMNODES];
194
195int register_one_node(int nid)
196{
197 int error = 0;
198
199 if (node_online(nid)) {
200 int p_node = parent_node(nid);
201 struct node *parent = NULL;
202
203 if (p_node != nid)
204 parent = &node_devices[p_node];
205
206 error = register_node(&node_devices[nid], nid, parent);
207 }
208
209 return error;
210
211}
212
213void unregister_one_node(int nid)
214{
215 unregister_node(&node_devices[nid]);
216}
217
193static int __init register_node_type(void) 218static int __init register_node_type(void)
194{ 219{
195 return sysdev_class_register(&node_class); 220 return sysdev_class_register(&node_class);