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

Go to the source code of this file.

Functions

static long do_pagecache_flush (file_t *file, off_t pgoff, size_t npages)
 
static long do_sync_inode (file_t *file)
 
static void vfs_io_ops_close (io_t *io)
 
static void vfs_io_ops_close_dir (io_t *io)
 
static size_t vfs_io_ops_read (io_t *io, void *buf, size_t count)
 
static size_t vfs_io_ops_write (io_t *io, const void *buf, size_t count)
 
static off_t vfs_io_ops_seek (io_t *io, off_t offset, io_seek_whence_t whence)
 
static vmfault_result_t vfs_fault_handler (vmap_t *vmap, ptr_t fault_addr, pagefault_t *info)
 
static bool vfs_io_ops_mmap (io_t *io, vmap_t *vmap, off_t offset)
 
static bool vfs_io_ops_munmap (io_t *io, vmap_t *vmap, bool *unmapped)
 
static void vfs_io_ops_getname (const io_t *io, char *buf, size_t size)
 
static __used void vfs_flusher_entry (void *arg)
 
static void vfs_flusher_init (void)
 
 MOS_INIT (KTHREAD, vfs_flusher_init)
 
static void vfs_copy_stat (file_stat_t *statbuf, inode_t *inode)
 
static filesystem_tvfs_find_filesystem (mos::string_view name)
 
static bool vfs_verify_permissions (dentry_t &file_dentry, bool open, bool read, bool create, bool execute, bool write)
 
static PtrResult< file_tvfs_do_open (dentry_t *base, const char *path, open_flags flags)
 
PtrResult< file_tvfs_do_open_dentry (dentry_t *entry, bool created, bool read, bool write, bool exec, bool truncate)
 Open an directory dentry.
 
void vfs_register_filesystem (filesystem_t *fs)
 
long vfs_mount (const char *device, const char *path, const char *fs, const char *options)
 Mount a filesystem at a given existing path.
 
long vfs_unmount (const char *path)
 Unmount a filesystem at a given path.
 
PtrResult< file_tvfs_openat (int fd, const char *path, open_flags flags)
 Open a file at a given path.
 
long vfs_fstatat (fd_t fd, const char *path, file_stat_t *__restrict statbuf, fstatat_flags flags)
 Stat a file.
 
size_t vfs_readlinkat (fd_t dirfd, const char *path, char *buf, size_t size)
 Read a symbolic link.
 
long vfs_symlink (const char *path, const char *target)
 Create a symbolic link.
 
long vfs_mkdir (const char *path)
 Create a directory.
 
long vfs_rmdir (const char *path)
 
size_t vfs_list_dir (io_t *io, void *user_buf, size_t user_size)
 Get the content of a directory.
 
long vfs_chdirat (fd_t dirfd, const char *path)
 Change the current working directory.
 
ssize_t vfs_getcwd (char *buf, size_t size)
 Get the current working directory.
 
long vfs_fchmodat (fd_t fd, const char *path, int perm, int flags)
 Change the permissions of a file.
 
long vfs_unlinkat (fd_t dirfd, const char *path)
 Remove the name of a file, and possibly the file itself.
 
long vfs_fsync (io_t *io, bool sync_metadata, off_t start, off_t end)
 Synchronize a file with the filesystem.
 
static bool vfs_sysfs_filesystems (sysfs_file_t *f)
 
static bool vfs_sysfs_mountpoints (sysfs_file_t *f)
 
static void vfs_sysfs_dentry_stats_stat_receiver (int depth, const dentry_t *dentry, bool mountroot, void *data)
 
static bool vfs_sysfs_dentry_stats (sysfs_file_t *f)
 
 SYSFS_AUTOREGISTER (vfs, vfs_sysfs_items)
 

Variables

static list_head vfs_fs_list
 
static spinlock_t vfs_fs_list_lock
 
dentry_troot_dentry = NULL
 
static const io_op_t file_io_ops
 
static const io_op_t dir_io_ops
 
static sysfs_item_t vfs_sysfs_items []
 

Function Documentation

◆ do_pagecache_flush()

static long do_pagecache_flush ( file_t * file,
off_t pgoff,
size_t npages )
static

Definition at line 37 of file vfs.cpp.

Referenced by vfs_fsync(), and vfs_io_ops_close().

+ Here is the call graph for this function:

◆ do_sync_inode()

static long do_sync_inode ( file_t * file)
static

Definition at line 52 of file vfs.cpp.

Referenced by vfs_fsync(), and vfs_io_ops_close().

◆ vfs_io_ops_close()

static void vfs_io_ops_close ( io_t * io)
static

Definition at line 62 of file vfs.cpp.

Referenced by vfs_io_ops_close_dir().

+ Here is the call graph for this function:

◆ vfs_io_ops_close_dir()

static void vfs_io_ops_close_dir ( io_t * io)
static

Definition at line 86 of file vfs.cpp.

+ Here is the call graph for this function:

◆ vfs_io_ops_read()

static size_t vfs_io_ops_read ( io_t * io,
void * buf,
size_t count )
static

Definition at line 106 of file vfs.cpp.

+ Here is the call graph for this function:

◆ vfs_io_ops_write()

static size_t vfs_io_ops_write ( io_t * io,
const void * buf,
size_t count )
static

Definition at line 124 of file vfs.cpp.

+ Here is the call graph for this function:

◆ vfs_io_ops_seek()

static off_t vfs_io_ops_seek ( io_t * io,
off_t offset,
io_seek_whence_t whence )
static

Definition at line 139 of file vfs.cpp.

+ Here is the call graph for this function:

◆ vfs_fault_handler()

static vmfault_result_t vfs_fault_handler ( vmap_t * vmap,
ptr_t fault_addr,
pagefault_t * info )
static

Definition at line 178 of file vfs.cpp.

Referenced by vfs_io_ops_mmap().

+ Here is the call graph for this function:

◆ vfs_io_ops_mmap()

static bool vfs_io_ops_mmap ( io_t * io,
vmap_t * vmap,
off_t offset )
static

Definition at line 228 of file vfs.cpp.

+ Here is the call graph for this function:

◆ vfs_io_ops_munmap()

static bool vfs_io_ops_munmap ( io_t * io,
vmap_t * vmap,
bool * unmapped )
static

Definition at line 242 of file vfs.cpp.

+ Here is the call graph for this function:

◆ vfs_io_ops_getname()

static void vfs_io_ops_getname ( const io_t * io,
char * buf,
size_t size )
static

Definition at line 253 of file vfs.cpp.

+ Here is the call graph for this function:

◆ vfs_flusher_entry()

static __used void vfs_flusher_entry ( void * arg)
static

Definition at line 277 of file vfs.cpp.

+ Here is the call graph for this function:

◆ vfs_flusher_init()

static void vfs_flusher_init ( void )
static

Definition at line 287 of file vfs.cpp.

Referenced by MOS_INIT().

◆ MOS_INIT()

MOS_INIT ( KTHREAD ,
vfs_flusher_init  )
+ Here is the call graph for this function:

◆ vfs_copy_stat()

static void vfs_copy_stat ( file_stat_t * statbuf,
inode_t * inode )
static

Definition at line 293 of file vfs.cpp.

Referenced by vfs_fstatat().

◆ vfs_find_filesystem()

static filesystem_t * vfs_find_filesystem ( mos::string_view name)
static

Definition at line 310 of file vfs.cpp.

Referenced by vfs_mount(), and vfs_register_filesystem().

◆ vfs_verify_permissions()

static bool vfs_verify_permissions ( dentry_t & file_dentry,
bool open,
bool read,
bool create,
bool execute,
bool write )
static

Definition at line 322 of file vfs.cpp.

Referenced by vfs_do_open().

◆ vfs_do_open()

static PtrResult< file_t > vfs_do_open ( dentry_t * base,
const char * path,
open_flags flags )
static

Definition at line 339 of file vfs.cpp.

Referenced by vfs_openat().

+ Here is the call graph for this function:

◆ vfs_sysfs_filesystems()

static bool vfs_sysfs_filesystems ( sysfs_file_t * f)
static

Definition at line 882 of file vfs.cpp.

+ Here is the call graph for this function:

◆ vfs_sysfs_mountpoints()

static bool vfs_sysfs_mountpoints ( sysfs_file_t * f)
static

Definition at line 892 of file vfs.cpp.

+ Here is the call graph for this function:

◆ vfs_sysfs_dentry_stats_stat_receiver()

static void vfs_sysfs_dentry_stats_stat_receiver ( int depth,
const dentry_t * dentry,
bool mountroot,
void * data )
static

Definition at line 904 of file vfs.cpp.

Referenced by vfs_sysfs_dentry_stats().

+ Here is the call graph for this function:

◆ vfs_sysfs_dentry_stats()

static bool vfs_sysfs_dentry_stats ( sysfs_file_t * f)
static

Definition at line 916 of file vfs.cpp.

+ Here is the call graph for this function:

◆ SYSFS_AUTOREGISTER()

SYSFS_AUTOREGISTER ( vfs ,
vfs_sysfs_items  )

Variable Documentation

◆ vfs_fs_list

list_head vfs_fs_list
static

Definition at line 32 of file vfs.cpp.

Referenced by vfs_find_filesystem(), vfs_register_filesystem(), and vfs_sysfs_filesystems().

◆ vfs_fs_list_lock

spinlock_t vfs_fs_list_lock
static

Definition at line 33 of file vfs.cpp.

Referenced by vfs_find_filesystem(), and vfs_register_filesystem().

◆ file_io_ops

const io_op_t file_io_ops
static
Initial value:
= {
.read = vfs_io_ops_read,
.write = vfs_io_ops_write,
.close = vfs_io_ops_close,
.seek = vfs_io_ops_seek,
.mmap = vfs_io_ops_mmap,
.munmap = vfs_io_ops_munmap,
.get_name = vfs_io_ops_getname,
}
static bool vfs_io_ops_mmap(io_t *io, vmap_t *vmap, off_t offset)
Definition vfs.cpp:228
static size_t vfs_io_ops_read(io_t *io, void *buf, size_t count)
Definition vfs.cpp:106
static void vfs_io_ops_close(io_t *io)
Definition vfs.cpp:62
static off_t vfs_io_ops_seek(io_t *io, off_t offset, io_seek_whence_t whence)
Definition vfs.cpp:139
static bool vfs_io_ops_munmap(io_t *io, vmap_t *vmap, bool *unmapped)
Definition vfs.cpp:242
static size_t vfs_io_ops_write(io_t *io, const void *buf, size_t count)
Definition vfs.cpp:124
static void vfs_io_ops_getname(const io_t *io, char *buf, size_t size)
Definition vfs.cpp:253

Definition at line 259 of file vfs.cpp.

Referenced by vfs_do_open_dentry().

◆ dir_io_ops

const io_op_t dir_io_ops
static
Initial value:
= {
.read = vfs_list_dir,
.get_name = vfs_io_ops_getname,
}
size_t vfs_list_dir(io_t *io, void *user_buf, size_t user_size)
Get the content of a directory.
Definition vfs.cpp:730
static void vfs_io_ops_close_dir(io_t *io)
Definition vfs.cpp:86

Definition at line 269 of file vfs.cpp.

Referenced by vfs_do_open_dentry().

◆ vfs_sysfs_items

sysfs_item_t vfs_sysfs_items[]
static
Initial value:
= {
}
#define SYSFS_RO_ITEM(_name, _show_fn)
Definition sysfs.hpp:42
static bool vfs_sysfs_dentry_stats(sysfs_file_t *f)
Definition vfs.cpp:916
static bool vfs_sysfs_filesystems(sysfs_file_t *f)
Definition vfs.cpp:882
static bool vfs_sysfs_mountpoints(sysfs_file_t *f)
Definition vfs.cpp:892

Definition at line 922 of file vfs.cpp.

Referenced by SYSFS_AUTOREGISTER().