Add a printx lock
[akaros.git] / kern / include / kmalloc.h
index 1c06403..9c90a25 100644 (file)
@@ -1,8 +1,8 @@
-/* Copyright (c) 2009 The Regents of the University of California. 
- * See the COPYRIGHT files at the top of this source tree for full 
+/* Copyright (c) 2009 The Regents of the University of California.
+ * See the COPYRIGHT files at the top of this source tree for full
  * license information.
- * 
- * Kevin Klues <klueska@cs.berkeley.edu>    
+ *
+ * Kevin Klues <klueska@cs.berkeley.edu>
  */
 
 #pragma once
@@ -29,10 +29,9 @@ void kfree(void *buf);
 void kmalloc_canary_check(char *str);
 void *debug_canary;
 
-/* Flags to pass to kmalloc */
-/* Not implemented yet. Block until it is available. */
-#define KMALLOC_WAIT                   (1 << 2)
-#define KMALLOC_ERROR                  (1 << 3)
+#define MEM_ATOMIC                             (1 << 1)
+#define MEM_WAIT                               (1 << 2)
+#define MEM_ERROR                              (1 << 3)
 
 /* Kmalloc tag flags looks like this:
  *
@@ -60,3 +59,12 @@ struct kmalloc_tag {
        uint32_t canary;
        int flags;
 };
+
+/* This is aligned so that the buf is aligned to the usual kmalloc alignment. */
+struct sized_alloc {
+       void                                            *buf;
+       size_t                                          size;
+} __attribute__((aligned(KMALLOC_ALIGNMENT)));
+
+/* Allocate a sized_alloc, big enough to hold size bytes.  Free with kfree. */
+struct sized_alloc *sized_kzmalloc(size_t size, int flags);