#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; if (init->managed) { mem->paddr = init->paddr; mem->managed = true; } else { uintptr_t paddr = pmm_alloc (init->pages); if (paddr == PMM_ALLOC_ERR) return false; mem->paddr = paddr; mem->managed = false; } mem->pages = mem->alive_pages = init->pages; return true; } void proc_cleanup_resource_mem (struct proc* proc, struct proc_resource* resource) { (void)proc; if (!resource->u.mem.managed) pmm_free (resource->u.mem.paddr, resource->u.mem.pages); }