MOS Source Code
Loading...
Searching...
No Matches
page_cache.c File Reference
+ Include dependency graph for page_cache.c:

Go to the source code of this file.

Classes

struct  _flush_and_drop_data
 

Functions

static bool do_flush_and_drop_cached_page (const uintn key, void *value, void *data)
 
long pagecache_flush_or_drop (inode_cache_t *icache, off_t pgoff, size_t npages, bool drop_page)
 Flush or drop a range of pages from the page cache.
 
long pagecache_flush_or_drop_all (inode_cache_t *icache, bool drop_page)
 Flush or drop all pages in the page cache.
 
phyframe_tpagecache_get_page_for_read (inode_cache_t *cache, off_t pgoff)
 Get a page from the page cache.
 
phyframe_tpagecache_get_page_for_write (inode_cache_t *cache, off_t pgoff)
 Get a page from the page cache for writing.
 
ssize_t vfs_read_pagecache (inode_cache_t *icache, void *buf, size_t size, off_t offset)
 
ssize_t vfs_write_pagecache (inode_cache_t *icache, const void *buf, size_t total_size, off_t offset)
 

Function Documentation

◆ do_flush_and_drop_cached_page()

static bool do_flush_and_drop_cached_page ( const uintn key,
void * value,
void * data )
static

Definition at line 23 of file page_cache.c.

Referenced by pagecache_flush_or_drop(), and pagecache_flush_or_drop_all().

+ Here is the call graph for this function:

◆ pagecache_flush_or_drop()

long pagecache_flush_or_drop ( inode_cache_t * icache,
off_t pgoff,
size_t npages,
bool drop_page )

Flush or drop a range of pages from the page cache.

Parameters
icacheThe inode cache
pgoffThe starting page offset
npagesThe number of pages to flush or drop
drop_pageWhether to drop the pages, or just flush them
Returns
long

Definition at line 56 of file page_cache.c.

Referenced by do_pagecache_flush().

+ Here is the call graph for this function:

◆ pagecache_flush_or_drop_all()

long pagecache_flush_or_drop_all ( inode_cache_t * icache,
bool drop_page )

Flush or drop all pages in the page cache.

Parameters
icacheThe inode cache
drop_pageWhether to drop the pages, or just flush them
Returns
long

Definition at line 78 of file page_cache.c.

Referenced by do_pagecache_flush(), and inode_try_drop().

+ Here is the call graph for this function:

◆ pagecache_get_page_for_read()

phyframe_t * pagecache_get_page_for_read ( inode_cache_t * cache,
off_t pgoff )

Get a page from the page cache.

Parameters
cacheThe inode cache
pgoffThe page offset
Returns
phyframe_t* The page, or NULL if it doesn't exist
Note
Caller must hold the cache's lock

Definition at line 85 of file page_cache.c.

Referenced by pagecache_get_page_for_write(), vfs_fault_handler(), and vfs_read_pagecache().

+ Here is the call graph for this function:

◆ pagecache_get_page_for_write()

phyframe_t * pagecache_get_page_for_write ( inode_cache_t * cache,
off_t pgoff )

Get a page from the page cache for writing.

Parameters
cacheThe inode cache
pgoffThe page offset
Returns
phyframe_t* The page

Definition at line 103 of file page_cache.c.

Referenced by simple_page_write_begin().

+ Here is the call graph for this function:

◆ vfs_read_pagecache()

ssize_t vfs_read_pagecache ( inode_cache_t * icache,
void * buf,
size_t size,
off_t offset )

Definition at line 108 of file page_cache.c.

Referenced by vfs_generic_read().

+ Here is the call graph for this function:

◆ vfs_write_pagecache()

ssize_t vfs_write_pagecache ( inode_cache_t * icache,
const void * buf,
size_t total_size,
off_t offset )

Definition at line 137 of file page_cache.c.

Referenced by vfs_generic_write().

+ Here is the call graph for this function: