|
@@ -18,6 +18,7 @@
|
|
|
#include <linux/node.h>
|
|
|
#include <linux/compiler.h>
|
|
|
#include <linux/mutex.h>
|
|
|
+#include <linux/notifier.h>
|
|
|
|
|
|
#define MIN_MEMORY_BLOCK_SIZE (1UL << SECTION_SIZE_BITS)
|
|
|
|
|
@@ -127,13 +128,18 @@ enum mem_add_context { BOOT, HOTPLUG };
|
|
|
#endif /* CONFIG_MEMORY_HOTPLUG_SPARSE */
|
|
|
|
|
|
#ifdef CONFIG_MEMORY_HOTPLUG
|
|
|
-#define hotplug_memory_notifier(fn, pri) { \
|
|
|
+#define hotplug_memory_notifier(fn, pri) ({ \
|
|
|
static __meminitdata struct notifier_block fn##_mem_nb =\
|
|
|
- { .notifier_call = fn, .priority = pri }; \
|
|
|
+ { .notifier_call = fn, .priority = pri };\
|
|
|
register_memory_notifier(&fn##_mem_nb); \
|
|
|
-}
|
|
|
+})
|
|
|
+#define register_hotmemory_notifier(nb) register_memory_notifier(nb)
|
|
|
+#define unregister_hotmemory_notifier(nb) unregister_memory_notifier(nb)
|
|
|
#else
|
|
|
-#define hotplug_memory_notifier(fn, pri) do { } while (0)
|
|
|
+#define hotplug_memory_notifier(fn, pri) (0)
|
|
|
+/* These aren't inline functions due to a GCC bug. */
|
|
|
+#define register_hotmemory_notifier(nb) ({ (void)(nb); 0; })
|
|
|
+#define unregister_hotmemory_notifier(nb) ({ (void)(nb); })
|
|
|
#endif
|
|
|
|
|
|
/*
|