summaryrefslogtreecommitdiff
path: root/user/libthread/malloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'user/libthread/malloc.c')
-rw-r--r--user/libthread/malloc.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/user/libthread/malloc.c b/user/libthread/malloc.c
new file mode 100644
index 0000000..8be6683
--- /dev/null
+++ b/user/libthread/malloc.c
@@ -0,0 +1,40 @@
+/**
+ * @file malloc.c
+ * @author Hanjie Wu (hanjiew)
+ * @author Devang Acharya (devanga)
+ * @brief Thread safe wrappers for malloc and family
+ * @date 2023-02-22
+ *
+ */
+
+#include <malloc.h>
+#include <mutex.h>
+
+mutex_t malloc_lock = MUTEX_INIT;
+
+void* malloc(size_t size) {
+ mutex_lock(&malloc_lock);
+ void* result = _malloc(size);
+ mutex_unlock(&malloc_lock);
+ return result;
+}
+
+void* calloc(size_t nelt, size_t eltsize) {
+ mutex_lock(&malloc_lock);
+ void* result = _calloc(nelt, eltsize);
+ mutex_unlock(&malloc_lock);
+ return result;
+}
+
+void* realloc(void* buf, size_t new_size) {
+ mutex_lock(&malloc_lock);
+ void* result = _realloc(buf, new_size);
+ mutex_unlock(&malloc_lock);
+ return result;
+}
+
+void free(void* buf) {
+ mutex_lock(&malloc_lock);
+ _free(buf);
+ mutex_unlock(&malloc_lock);
+}