summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/sys/include/os/kalloc.h8
-rw-r--r--src/sys/os/os_kalloc.c11
2 files changed, 19 insertions, 0 deletions
diff --git a/src/sys/include/os/kalloc.h b/src/sys/include/os/kalloc.h
index 143c4f9..aaaaa74 100644
--- a/src/sys/include/os/kalloc.h
+++ b/src/sys/include/os/kalloc.h
@@ -48,6 +48,14 @@
void *kalloc(size_t sz);
/*
+ * Reallocates memory pool created by `dynalloc()'
+ *
+ * @old_ptr: Pointer to old pool.
+ * @newsize: Size of new pool.
+ */
+void *krealloc(void *old_ptr, size_t newsize);
+
+/*
* Free a chunk of memory given to by
* `ptr'
*
diff --git a/src/sys/os/os_kalloc.c b/src/sys/os/os_kalloc.c
index 53e2e13..a5e48e5 100644
--- a/src/sys/os/os_kalloc.c
+++ b/src/sys/os/os_kalloc.c
@@ -64,6 +64,17 @@ kalloc(size_t sz)
return tmp;
}
+void *
+krealloc(void *old_ptr, size_t newsize)
+{
+ void *tmp;
+
+ spinlock_acquire(&lock);
+ tmp = tlsf_realloc(tlsf_ctx, old_ptr, newsize);
+ spinlock_release(&lock);
+ return tmp;
+}
+
/*
* Memory deallocation
*/