mm: add flags argument to mm_cache_get_page

This commit is contained in:
Matheus
2026-07-18 15:24:31 -03:00
parent b9531c0ec7
commit 6e5e9ecdc5
5 changed files with 10 additions and 9 deletions
+1 -1
View File
@@ -231,7 +231,7 @@ int abc_get_block(abc_t *abc, uint64_t block, abc_block_t **ret) {
}
page_t *page;
int error = mm_cache_get_page(abc->backing, ROUND_DOWN(block * abc->block_size, PAGE_SIZE), &page);
int error = mm_cache_get_page(abc->backing, ROUND_DOWN(block * abc->block_size, PAGE_SIZE), 0, &page);
if (error) {
slab_free(abc_block_cache, abc_block);
trie_free_preallocation(trie_preallocation);
+4 -4
View File
@@ -449,7 +449,7 @@ int vfs_write_iovec(vnode_t *node, iovec_iterator_t *iovec_iterator, size_t size
if (startoffset) {
// unaligned first page
err = mm_cache_get_page(node, pageoffset * PAGE_SIZE, &page);
err = mm_cache_get_page(node, pageoffset * PAGE_SIZE, 0, &page);
if (err)
goto leave;
@@ -478,7 +478,7 @@ int vfs_write_iovec(vnode_t *node, iovec_iterator_t *iovec_iterator, size_t size
for (uintmax_t offset = 0; offset < pagecount * PAGE_SIZE; offset += PAGE_SIZE) {
// the other pages
err = mm_cache_get_page(node, pageoffset * PAGE_SIZE + offset, &page);
err = mm_cache_get_page(node, pageoffset * PAGE_SIZE + offset, 0, &page);
if (err)
goto leave;
@@ -562,7 +562,7 @@ int vfs_read_iovec(vnode_t *node, iovec_iterator_t *iovec_iterator, size_t size,
if (startoffset) {
// unaligned first page
err = mm_cache_get_page(node, pageoffset * PAGE_SIZE, &page);
err = mm_cache_get_page(node, pageoffset * PAGE_SIZE, 0, &page);
if (err)
goto leave;
@@ -590,7 +590,7 @@ int vfs_read_iovec(vnode_t *node, iovec_iterator_t *iovec_iterator, size_t size,
for (uintmax_t offset = 0; offset < pagecount * PAGE_SIZE; offset += PAGE_SIZE) {
// the other pages
err = mm_cache_get_page(node, pageoffset * PAGE_SIZE + offset, &page);
err = mm_cache_get_page(node, pageoffset * PAGE_SIZE + offset, 0, &page);
if (err)
goto leave;
+1 -1
View File
@@ -99,7 +99,7 @@ void mm_init();
extern size_t mm_cache_cached_pages;
void mm_cache_init(void);
int mm_cache_get_page(vnode_t *vnode, uintmax_t offset, page_t **res);
int mm_cache_get_page(vnode_t *vnode, uintmax_t offset, int flags, page_t **res);
int mm_cache_take_page(page_t *page);
int mm_cache_make_dirty(page_t *page);
int mm_cache_truncate(vnode_t *vnode, uintmax_t offset);
+2 -1
View File
@@ -114,7 +114,8 @@ static void remove_page(page_t *page) {
--mm_cache_cached_pages;
}
int mm_cache_get_page(vnode_t *vnode, uintmax_t offset, page_t **res) {
int mm_cache_get_page(vnode_t *vnode, uintmax_t offset, int flags, page_t **res) {
(void) flags;
__assert(vnode->type == V_TYPE_REGULAR || vnode->type == V_TYPE_BLKDEV);
__assert((offset % PAGE_SIZE) == 0);
retry_err:
+2 -2
View File
@@ -93,7 +93,7 @@ int mm_partial_page_in(mm_range_t *range, void *vaddr, page_t **resulting_page)
if (cacheable) {
page_t *res;
error = mm_cache_get_page(range->vnode, range->offset + map_offset, &res);
error = mm_cache_get_page(range->vnode, range->offset + map_offset, 0, &res);
if (error)
return error;
@@ -216,7 +216,7 @@ int mm_full_page_in(mm_range_t *range, void *vaddr, page_t **resulting_page) {
}
page_t *vn_page;
int error = mm_cache_get_page(range->vnode, range->offset + map_offset, &vn_page);
int error = mm_cache_get_page(range->vnode, range->offset + map_offset, 0, &vn_page);
if (error)
return error;