]> Pileus Git - ~andy/linux/blobdiff - drivers/base/node.c
/home/lenb/src/to-linus-stable branch 'acpi-2.6.12'
[~andy/linux] / drivers / base / node.c
index 583d57ec49a822f0f30305526d456141662bec38..904b27caf697df2c0d14d1cab426212bad27bb25 100644 (file)
@@ -87,7 +87,7 @@ static ssize_t node_read_numastat(struct sys_device * dev, char * buf)
        for (i = 0; i < MAX_NR_ZONES; i++) {
                struct zone *z = &pg->node_zones[i];
                for (cpu = 0; cpu < NR_CPUS; cpu++) {
-                       struct per_cpu_pageset *ps = &z->pageset[cpu];
+                       struct per_cpu_pageset *ps = zone_pcp(z,cpu);
                        numa_hit += ps->numa_hit;
                        numa_miss += ps->numa_miss;
                        numa_foreign += ps->numa_foreign;
@@ -136,7 +136,7 @@ static SYSDEV_ATTR(distance, S_IRUGO, node_read_distance, NULL);
  *
  * Initialize and register the node device.
  */
-int __init register_node(struct node *node, int num, struct node *parent)
+int register_node(struct node *node, int num, struct node *parent)
 {
        int error;
 
@@ -153,8 +153,24 @@ int __init register_node(struct node *node, int num, struct node *parent)
        return error;
 }
 
+/**
+ * unregister_node - unregister a node device
+ * @node: node going away
+ *
+ * Unregisters a node device @node.  All the devices on the node must be
+ * unregistered before calling this function.
+ */
+void unregister_node(struct node *node)
+{
+       sysdev_remove_file(&node->sysdev, &attr_cpumap);
+       sysdev_remove_file(&node->sysdev, &attr_meminfo);
+       sysdev_remove_file(&node->sysdev, &attr_numastat);
+       sysdev_remove_file(&node->sysdev, &attr_distance);
+
+       sysdev_unregister(&node->sysdev);
+}
 
-int __init register_node_type(void)
+static int __init register_node_type(void)
 {
        return sysdev_class_register(&node_class);
 }