summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-10-17 16:03:21 -0400
committerIan Moffett <ian@osmora.org>2025-10-17 16:03:21 -0400
commit6502aae76e88e552281fa9c920dcc22cd4a836f5 (patch)
tree5acf506a90462eb241c09a7dd801bb6c53c58b6e
parentf31e63d79d2a7a4a6f66bacb891af8bd6be00ea5 (diff)
kern: Add kernel realloc() function
Signed-off-by: Ian Moffett <ian@osmora.org>
-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
*/