memblock: Export MEMBLOCK_ERROR
[deliverable/linux.git] / include / linux / memblock.h
index 0fe6dd56a4b4da004b86df4027ef11a307a291d3..1a9c29cc92fafd6a4ee1a206a36631b1865f558d 100644 (file)
@@ -18,7 +18,8 @@
 
 #include <asm/memblock.h>
 
-#define MAX_MEMBLOCK_REGIONS 128
+#define INIT_MEMBLOCK_REGIONS  128
+#define MEMBLOCK_ERROR         (~(phys_addr_t)0)
 
 struct memblock_region {
        phys_addr_t base;
@@ -26,18 +27,24 @@ struct memblock_region {
 };
 
 struct memblock_type {
-       unsigned long cnt;
-       phys_addr_t size;
-       struct memblock_region regions[MAX_MEMBLOCK_REGIONS+1];
+       unsigned long cnt;      /* number of regions */
+       unsigned long max;      /* size of the allocated array */
+       struct memblock_region *regions;
 };
 
 struct memblock {
        phys_addr_t current_limit;
+       phys_addr_t memory_size;        /* Updated by memblock_analyze() */
        struct memblock_type memory;
        struct memblock_type reserved;
 };
 
 extern struct memblock memblock;
+extern int memblock_debug;
+extern int memblock_can_resize;
+
+#define memblock_dbg(fmt, ...) \
+       if (memblock_debug) printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)
 
 extern void __init memblock_init(void);
 extern void __init memblock_analyze(void);
@@ -46,7 +53,14 @@ extern long memblock_remove(phys_addr_t base, phys_addr_t size);
 extern long __init memblock_free(phys_addr_t base, phys_addr_t size);
 extern long __init memblock_reserve(phys_addr_t base, phys_addr_t size);
 
-extern phys_addr_t __init memblock_alloc_nid(phys_addr_t size, phys_addr_t align, int nid);
+/* The numa aware allocator is only available if
+ * CONFIG_ARCH_POPULATES_NODE_MAP is set
+ */
+extern phys_addr_t __init memblock_alloc_nid(phys_addr_t size, phys_addr_t align,
+                                       int nid);
+extern phys_addr_t __init memblock_alloc_try_nid(phys_addr_t size, phys_addr_t align,
+                                           int nid);
+
 extern phys_addr_t __init memblock_alloc(phys_addr_t size, phys_addr_t align);
 
 /* Flags for memblock_alloc_base() amd __memblock_alloc_base() */
@@ -71,6 +85,8 @@ extern void memblock_dump_all(void);
 
 /* Provided by the architecture */
 extern phys_addr_t memblock_nid_range(phys_addr_t start, phys_addr_t end, int *nid);
+extern int memblock_memory_can_coalesce(phys_addr_t addr1, phys_addr_t size1,
+                                  phys_addr_t addr2, phys_addr_t size2);
 
 /**
  * memblock_set_current_limit - Set the current allocation limit to allow
This page took 0.047599 seconds and 5 git commands to generate.