From 4f7077d4583b50010387e251c9cf411398bbd161 Mon Sep 17 00:00:00 2001 From: kamkow1 Date: Fri, 16 Jan 2026 22:13:17 +0100 Subject: [PATCH] Move mutex and mem create/cleanup functions into mutex.c and mem.c respectively --- kernel/proc/mem.c | 20 ++++++++++++++++++++ kernel/proc/mem.h | 2 ++ kernel/proc/mutex.c | 13 +++++++++++++ kernel/proc/mutex.h | 2 ++ kernel/proc/resource.c | 32 -------------------------------- 5 files changed, 37 insertions(+), 32 deletions(-) diff --git a/kernel/proc/mem.c b/kernel/proc/mem.c index 7f4b9ff..b1d0b39 100644 --- a/kernel/proc/mem.c +++ b/kernel/proc/mem.c @@ -1,9 +1,29 @@ #include +#include #include #include #include #include +bool proc_create_resource_mem (struct proc_resource_mem* mem, struct proc_resource_mem_init* init) { + if (init->pages == 0) + return false; + + uintptr_t paddr = pmm_alloc (init->pages); + if (paddr == PMM_ALLOC_ERR) + return false; + + mem->paddr = paddr; + mem->pages = mem->alive_pages = init->pages; + + return true; +} + +void proc_cleanup_resource_mem (struct proc* proc, struct proc_resource* resource) { + (void)proc; + pmm_free (resource->u.mem.paddr, resource->u.mem.pages); +} + void proc_mem_unref (struct proc* proc, struct proc_resource_mem* mem, size_t pages) { spin_lock_ctx_t ctxrs; diff --git a/kernel/proc/mem.h b/kernel/proc/mem.h index 121fd16..078b796 100644 --- a/kernel/proc/mem.h +++ b/kernel/proc/mem.h @@ -18,6 +18,8 @@ struct proc_resource_mem_init { size_t pages; }; +bool proc_create_resource_mem (struct proc_resource_mem* mem, struct proc_resource_mem_init* init); +void proc_cleanup_resource_mem (struct proc* proc, struct proc_resource* resource); void proc_mem_unref (struct proc* proc, struct proc_resource_mem* mem, size_t pages); #endif // _KERNEL_PROC_MEM_H diff --git a/kernel/proc/mutex.c b/kernel/proc/mutex.c index d185140..313d878 100644 --- a/kernel/proc/mutex.c +++ b/kernel/proc/mutex.c @@ -1,11 +1,24 @@ #include #include #include +#include #include #include #include #include +bool proc_create_resource_mutex (struct proc_mutex* mutex) { + memset (mutex, 0, sizeof (*mutex)); + + return true; +} + +void proc_cleanup_resource_mutex (struct proc* proc, struct proc_resource* resource) { + struct proc_mutex* mutex = &resource->u.mutex; + + proc_mutex_unlock (proc, mutex); +} + void proc_mutex_lock (struct proc* proc, struct proc_mutex* mutex) { spin_lock_ctx_t ctxmt; diff --git a/kernel/proc/mutex.h b/kernel/proc/mutex.h index d142b37..7a244c6 100644 --- a/kernel/proc/mutex.h +++ b/kernel/proc/mutex.h @@ -15,6 +15,8 @@ struct proc_mutex { struct proc* owner; }; +bool proc_create_resource_mutex (struct proc_mutex* mutex); +void proc_cleanup_resource_mutex (struct proc* proc, struct proc_resource* resource); void proc_mutex_lock (struct proc* proc, struct proc_mutex* mutex); bool proc_mutex_unlock (struct proc* proc, struct proc_mutex* mutex); diff --git a/kernel/proc/resource.c b/kernel/proc/resource.c index 482db4d..4a0abca 100644 --- a/kernel/proc/resource.c +++ b/kernel/proc/resource.c @@ -42,38 +42,6 @@ void proc_drop_resource (struct proc* proc, struct proc_resource* resource) { } } -static bool proc_create_resource_mem (struct proc_resource_mem* mem, - struct proc_resource_mem_init* init) { - if (init->pages == 0) - return false; - - uintptr_t paddr = pmm_alloc (init->pages); - if (paddr == PMM_ALLOC_ERR) - return false; - - mem->paddr = paddr; - mem->pages = mem->alive_pages = init->pages; - - return true; -} - -static void proc_cleanup_resource_mem (struct proc* proc, struct proc_resource* resource) { - (void)proc; - pmm_free (resource->u.mem.paddr, resource->u.mem.pages); -} - -static bool proc_create_resource_mutex (struct proc_mutex* mutex) { - memset (mutex, 0, sizeof (*mutex)); - - return true; -} - -static void proc_cleanup_resource_mutex (struct proc* proc, struct proc_resource* resource) { - struct proc_mutex* mutex = &resource->u.mutex; - - proc_mutex_unlock (proc, mutex); -} - struct proc_resource* proc_create_resource (struct proc* proc, int rid, int type, int vis, void* data) { spin_lock_ctx_t ctxpr;