mm: refactor pmm -> page

This commit is contained in:
Matheus
2026-07-01 11:56:06 -03:00
parent 39e63c3e44
commit 6f8700e678
35 changed files with 226 additions and 226 deletions
+3 -3
View File
@@ -6,7 +6,7 @@
#include <errno.h>
#include <kernel/alloc.h>
#include <kernel/timekeeper.h>
#include <kernel/pmm.h>
#include <kernel/page.h>
#include <kernel/vmmcache.h>
#include <kernel/auth.h>
#include <kernel/init.h>
@@ -391,7 +391,7 @@ static int devfs_getpage(vnode_t *node, uintmax_t offset, struct page_t *page) {
// only block devices will have this called
__assert(node->type == V_TYPE_BLKDEV);
iovec_t iovec = {
.addr = MAKE_HHDM(pmm_getpageaddress(page)),
.addr = MAKE_HHDM(mm_get_page_address(page)),
.len = PAGE_SIZE
};
@@ -410,7 +410,7 @@ static int devfs_putpage(vnode_t *node, uintmax_t offset, struct page_t *page) {
// only block devices will have this called
__assert(node->type == V_TYPE_BLKDEV);
iovec_t iovec = {
.addr = MAKE_HHDM(pmm_getpageaddress(page)),
.addr = MAKE_HHDM(mm_get_page_address(page)),
.len = PAGE_SIZE
};
+3 -3
View File
@@ -4,7 +4,7 @@
#include <kernel/slab.h>
#include <kernel/vmm.h>
#include <arch/cpu.h>
#include <kernel/pmm.h>
#include <kernel/page.h>
#include <hashtable.h>
#include <mutex.h>
#include <logging.h>
@@ -1761,7 +1761,7 @@ static int ext2_getpage(vnode_t *node, uintmax_t offset, struct page_t *page) {
// only regular files get cached
__assert(node->type == V_TYPE_REGULAR);
size_t readc = PAGE_SIZE;
void *addr = MAKE_HHDM(pmm_getpageaddress(page));
void *addr = MAKE_HHDM(mm_get_page_address(page));
iovec_t iovec = {
.addr = addr,
@@ -1784,7 +1784,7 @@ static int ext2_putpage(vnode_t *node, uintmax_t offset, struct page_t *page) {
__assert(node->type == V_TYPE_REGULAR);
size_t writec;
iovec_t iovec = {
.addr = MAKE_HHDM(pmm_getpageaddress(page)),
.addr = MAKE_HHDM(mm_get_page_address(page)),
.len = PAGE_SIZE
};
+3 -3
View File
@@ -6,7 +6,7 @@
#include <kernel/init.h>
#include <kernel/slab.h>
#include <kernel/auth.h>
#include <kernel/pmm.h>
#include <kernel/page.h>
#include <kernel/vmmcache.h>
typedef struct {
@@ -383,7 +383,7 @@ static int fatfs_putpage(vnode_t *node, uintmax_t offset, struct page_t *page) {
__assert(node->type == V_TYPE_REGULAR);
size_t write_count;
iovec_t iovec = {
.addr = MAKE_HHDM(pmm_getpageaddress(page)),
.addr = MAKE_HHDM(mm_get_page_address(page)),
.len = PAGE_SIZE
};
@@ -410,7 +410,7 @@ static int fatfs_getpage(vnode_t *node, uintmax_t offset, struct page_t *page) {
// only regular files get cached
__assert(node->type == V_TYPE_REGULAR);
size_t read_count = PAGE_SIZE;
void *addr = MAKE_HHDM(pmm_getpageaddress(page));
void *addr = MAKE_HHDM(mm_get_page_address(page));
iovec_t iovec = {
.addr = addr,
+3 -3
View File
@@ -4,7 +4,7 @@
#include <logging.h>
#include <util.h>
#include <kernel/vmm.h>
#include <kernel/pmm.h>
#include <kernel/page.h>
#include <kernel/abi.h>
#include <time.h>
#include <kernel/vfs.h>
@@ -128,7 +128,7 @@ void initrd_unpack() {
for (;;) {
if (cleanupbytespassed >= PAGE_SIZE) {
size_t pagec = cleanupbytespassed / PAGE_SIZE;
pmm_makefree(FROM_HHDM(cleanupptr), pagec);
mm_force_free_page(FROM_HHDM(cleanupptr), pagec);
cleanupptr = (void *)((uintptr_t)cleanupptr + ROUND_DOWN(cleanupbytespassed, PAGE_SIZE));
cleanupbytespassed %= PAGE_SIZE;
}
@@ -181,5 +181,5 @@ void initrd_unpack() {
}
// free remaining pages to be freed
pmm_makefree(FROM_HHDM(cleanupptr), ROUND_UP(cleanupbytespassed, PAGE_SIZE) / PAGE_SIZE);
mm_force_free_page(FROM_HHDM(cleanupptr), ROUND_UP(cleanupbytespassed, PAGE_SIZE) / PAGE_SIZE);
}
+4 -4
View File
@@ -8,7 +8,7 @@
#include <util.h>
#include <kernel/abi.h>
#include <kernel/devfs.h>
#include <kernel/pmm.h>
#include <kernel/page.h>
#include <kernel/vmm.h>
#include <arch/cpu.h>
#include <string.h>
@@ -528,10 +528,10 @@ static int tmpfs_getpage(vnode_t *node, uintmax_t offset, struct page_t *page) {
// since tmpfs files now store their data on the vmmcache,
// all getpage will do will be set the page to 0 and pin it in memory
void *phy = pmm_getpageaddress(page);
void *phy = mm_get_page_address(page);
void *phyhhdm = MAKE_HHDM(phy);
pmm_hold(phy);
mm_hold_page(phy);
page->flags |= PAGE_FLAGS_PINNED;
memset(phyhhdm, 0, PAGE_SIZE);
return 0;
@@ -565,7 +565,7 @@ static int tmpfs_statfs(vfs_t *vfs, fsattr_t *fsattr) {
tmpfs_t *tmpfs = (tmpfs_t *)vfs;
size_t total_pages, free_pages;
pmm_getinfo(&total_pages, &free_pages);
mm_get_page_statistics(&total_pages, &free_pages);
fsattr->io_size = PAGE_SIZE;
fsattr->block_size = PAGE_SIZE;
+12 -12
View File
@@ -454,11 +454,11 @@ int vfs_write_iovec(vnode_t *node, iovec_iterator_t *iovec_iterator, size_t size
goto leave;
size_t writesize = min(PAGE_SIZE - startoffset, size);
void *address = MAKE_HHDM(pmm_getpageaddress(page));
void *address = MAKE_HHDM(mm_get_page_address(page));
err = iovec_iterator_copy_to_buffer(iovec_iterator, (void *)((uintptr_t)address + startoffset), writesize);
if (err) {
pmm_release(FROM_HHDM(address));
mm_release_page(FROM_HHDM(address));
goto leave;
}
@@ -471,7 +471,7 @@ int vfs_write_iovec(vnode_t *node, iovec_iterator_t *iovec_iterator, size_t size
pageoffset += 1;
pagecount -= 1;
pmm_release(FROM_HHDM(address));
mm_release_page(FROM_HHDM(address));
if (err)
goto leave;
}
@@ -483,11 +483,11 @@ int vfs_write_iovec(vnode_t *node, iovec_iterator_t *iovec_iterator, size_t size
goto leave;
size_t writesize = min(PAGE_SIZE, size - *written);
void *address = MAKE_HHDM(pmm_getpageaddress(page));
void *address = MAKE_HHDM(mm_get_page_address(page));
err = iovec_iterator_copy_to_buffer(iovec_iterator, address, writesize);
if (err) {
pmm_release(FROM_HHDM(address));
mm_release_page(FROM_HHDM(address));
goto leave;
}
@@ -497,7 +497,7 @@ int vfs_write_iovec(vnode_t *node, iovec_iterator_t *iovec_iterator, size_t size
if (flags & V_FFLAGS_NOCACHE)
err = writenocache(node, page, pageoffset * PAGE_SIZE + offset);
pmm_release(FROM_HHDM(address));
mm_release_page(FROM_HHDM(address));
if (err)
goto leave;
@@ -567,11 +567,11 @@ int vfs_read_iovec(vnode_t *node, iovec_iterator_t *iovec_iterator, size_t size,
goto leave;
size_t readsize = min(PAGE_SIZE - startoffset, size);
void *address = MAKE_HHDM(pmm_getpageaddress(page));
void *address = MAKE_HHDM(mm_get_page_address(page));
err = iovec_iterator_copy_from_buffer(iovec_iterator, (void *)((uintptr_t)address + startoffset), readsize);
if (err) {
pmm_release(FROM_HHDM(address));
mm_release_page(FROM_HHDM(address));
goto leave;
}
@@ -585,7 +585,7 @@ int vfs_read_iovec(vnode_t *node, iovec_iterator_t *iovec_iterator, size_t size,
pageoffset += 1;
pagecount -= 1;
pmm_release(FROM_HHDM(address));
mm_release_page(FROM_HHDM(address));
}
for (uintmax_t offset = 0; offset < pagecount * PAGE_SIZE; offset += PAGE_SIZE) {
@@ -595,11 +595,11 @@ int vfs_read_iovec(vnode_t *node, iovec_iterator_t *iovec_iterator, size_t size,
goto leave;
size_t readsize = min(PAGE_SIZE, size - *bytesread);
void *address = MAKE_HHDM(pmm_getpageaddress(page));
void *address = MAKE_HHDM(mm_get_page_address(page));
err = iovec_iterator_copy_from_buffer(iovec_iterator, address, readsize);
if (err) {
pmm_release(FROM_HHDM(address));
mm_release_page(FROM_HHDM(address));
goto leave;
}
@@ -608,7 +608,7 @@ int vfs_read_iovec(vnode_t *node, iovec_iterator_t *iovec_iterator, size_t size,
// try to turn it into anonymous memory
vmmcache_evict(page);
}
pmm_release(FROM_HHDM(address));
mm_release_page(FROM_HHDM(address));
}
leave:
MUTEX_RELEASE(&node->size_lock);