Thread0 can call pthread_exit()
[akaros.git] / kern / include / kmalloc.h
index c09e70c..10614a4 100644 (file)
 #define KMALLOC_LARGEST KMALLOC_SMALLEST << NUM_KMALLOC_CACHES
 #define KMALLOC_OFFSET ROUNDUP(sizeof(struct kmalloc_tag), KMALLOC_ALIGNMENT)
 
-void* (DALLOC(n) boot_alloc)(uint32_t n, uint32_t align);
-void* (DALLOC(n*sz) boot_calloc)(uint32_t n, size_t sz, uint32_t align);
-
 void kmalloc_init(void);
 void* (DALLOC(size) kmalloc)(size_t size, int flags);
+void* (DALLOC(size) kzmalloc)(size_t size, int flags);
 void* (DALLOC(size) krealloc)(void* buf, size_t size, int flags);
 void  (DFREE(addr) kfree)(void *addr);
 
+/* Flags */
 #define KMALLOC_TAG_CACHE 1
 #define KMALLOC_TAG_PAGES 2
+/* Not implemented yet. Block until it is available. */
+#define KMALLOC_WAIT   4
+
+#define KMALLOC_CANARY 0xdeadbabe
 
 struct kmalloc_tag {
        int flags;
+       uint32_t canary;
        union {
-               struct kmem_cache *my_cache;
-               size_t num_pages;
+               struct kmem_cache *my_cache WHEN(flags == KMALLOC_TAG_CACHE);
+               size_t num_pages WHEN(flags == KMALLOC_TAG_PAGES);
        };
 };