mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-27 12:48:22 +00:00
mm: add flags argument to mm_cache_get_page
This commit is contained in:
+1
-1
@@ -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
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user