20 std::unique_ptr<int> a;
24 dentry->superblock = sb;
47 if (child->name ==
name)
69 *page = newPage.get();
121 if (d_parent ==
NULL)
133 add_record(state, child->inode->ino, child->name, child->inode->type);
should_inline dentry_t * dentry_parent(const dentry_t &dentry)
basic_string_view< char > string_view
T * create(Args &&...args)
ssize_t vfs_write_pagecache(inode_cache_t *icache, const void *buf, size_t total_size, off_t offset)
PtrResult< phyframe_t > pagecache_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)
should_inline bool spinlock_is_locked(const spinlock_t *lock)
#define spinlock_acquire(lock)
#define spinlock_release(lock)
superblock_t * superblock
MOSAPI void tree_node_init(tree_node_t *node)
#define tree_node(element)
MOSAPI void tree_add_child(tree_node_t *parent, tree_node_t *child)
#define tree_foreach_child(t, v, h)
void dentry_iterator_op(vfs_listdir_state_t *state, u64 ino, mos::string_view name, file_type_t type)
ssize_t vfs_generic_write(const file_t *file, const void *buf, size_t size, off_t offset)
void vfs_generic_iterate_dir(const dentry_t *dir, vfs_listdir_state_t *state, dentry_iterator_op add_record)
dentry_t * dentry_get_from_parent(superblock_t *sb, dentry_t *parent, mos::string_view name)
Create a new dentry with the given name and parent.
bool vfs_simple_write_begin(inode_cache_t *icache, off_t offset, size_t size)
bool simple_page_write_begin(inode_cache_t *icache, off_t offset, size_t size, phyframe_t **page, void **private_)
ssize_t vfs_generic_read(const file_t *file, void *buf, size_t size, off_t offset)
void simple_page_write_end(inode_cache_t *icache, off_t offset, size_t size, phyframe_t *page, void *private_)
long simple_flush_page_discard_data(inode_cache_t *icache, off_t pgoff, phyframe_t *page)
static dentry_t * dentry_create(superblock_t *sb, dentry_t *parent, mos::string_view name)