Malloc changes for future plan 9 namespace support
authorRonald G. Minnich <rminnich@gmail.com>
Fri, 2 Aug 2013 17:19:41 +0000 (10:19 -0700)
committerRonald G. Minnich <rminnich@gmail.com>
Fri, 2 Aug 2013 17:19:41 +0000 (10:19 -0700)
Add a kzmalloc which zeros the allocated area.

Add a flag, to be done later, which indicates that blocking, instead
of panicing, is ok when memory is not available.

Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
kern/include/kmalloc.h
kern/src/kmalloc.c

index c2774cf..10614a4 100644 (file)
 
 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
 
index f4b6f70..1ec948f 100644 (file)
@@ -80,6 +80,15 @@ void *kmalloc(size_t size, int flags)
        return buf + KMALLOC_OFFSET;
 }
 
+void *kzmalloc(size_t size, int flags) 
+{
+       void *v = kmalloc(size, flags);
+       if (! v)
+               return v;
+       memset(v, 0, size);
+       return v;
+}
+
 void *krealloc(void* buf, size_t size, int flags) {
        struct kmalloc_tag *tag = (struct kmalloc_tag*)(buf - KMALLOC_OFFSET);
        if (tag->my_cache->obj_size >= size)