Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Fixed spurious warning when memory block size is overrriden
[palacios.git] / linux_module / buddy.h
index 54c24a7..1017a3a 100644 (file)
@@ -48,6 +48,8 @@ struct buddy_mempool {
                                    */
 
     unsigned long num_free_blocks;
+    
+    void             *user_metadata; // whatever the user wants
 
     struct rb_node tree_node;
 };
@@ -71,26 +73,33 @@ buddy_init(unsigned long pool_order,
           unsigned int node_id);
 
 extern void 
-buddy_deinit(struct buddy_memzone * zone);
+buddy_deinit(struct buddy_memzone * zone,
+            int (*free_callback)(void *user_metadata));
 
 /* Add pool at given physical address */
 extern int 
 buddy_add_pool(struct buddy_memzone * zone, 
               unsigned long base_addr, 
-              unsigned long pool_order);
+              unsigned long pool_order,
+              void          *user_metadata);
                          
 
 /* Remove pool based at given physical address */
 extern int
 buddy_remove_pool(struct buddy_memzone * zone, 
                  unsigned long base_addr, 
-                 unsigned char force);
+                 unsigned char force,
+                 void          **user_metadata);
+
 
+// constraint=0 => no constraints, otherwise bitmask of:
+#define LWK_BUDDY_CONSTRAINT_4GB 0x1
 
 /* Allocate pages, returns physical address */
 extern uintptr_t 
 buddy_alloc(struct buddy_memzone * zone,
-           unsigned long order);
+           unsigned long order,
+           int constraints);
 
 
 /* Free a physical address */