PatchworkOS
Loading...
Searching...
No Matches
vfs.h File Reference
#include <kernel/fs/dentry.h>
#include <kernel/fs/file.h>
#include <kernel/fs/inode.h>
#include <kernel/fs/mount.h>
#include <kernel/fs/path.h>
#include <kernel/fs/superblock.h>
#include <kernel/fs/sysfs.h>
#include <kernel/proc/process.h>
#include <kernel/sync/rwlock.h>
#include <kernel/utils/map.h>
#include <sys/io.h>
#include <sys/list.h>
#include <sys/math.h>
#include <sys/proc.h>

Go to the source code of this file.

Data Structures

struct  filesystem_t
 Filesystem structure, represents a filesystem type, e.g. fat32, ramfs, sysfs, etc. More...
 
struct  vfs_list_t
 Helper structure for lists with a lock. More...
 
struct  vfs_map_t
 Helper structure for maps with a lock. More...
 

Macros

#define VFS_ROOT_ENTRY_NAME   "__root__"
 The name of the root entry.
 
#define VFS_DEVICE_NAME_NONE   "__no_device__"
 The name used to indicate no device.
 
#define BUFFER_READ(buffer, count, offset, src, size)
 Helper macros for implementing file operations dealing with simple buffers.
 

Typedefs

typedef struct filesystem filesystem_t
 

Functions

void vfs_init (void)
 Initializes the VFS.
 
uint64_t vfs_get_new_id (void)
 Generates a new unique ID.
 
uint64_t vfs_register_fs (filesystem_t *fs)
 Registers a filesystem.
 
uint64_t vfs_unregister_fs (filesystem_t *fs)
 Unregisters a filesystem.
 
filesystem_tvfs_get_fs (const char *name)
 Gets a filesystem by name.
 
inode_tvfs_get_inode (superblock_t *superblock, inode_number_t number)
 Get an inode for the given superblock and inode number.
 
dentry_tvfs_get_dentry (const dentry_t *parent, const char *name)
 Get a dentry for the given name. Will NOT traverse mountpoints.
 
dentry_tvfs_get_or_lookup_dentry (const path_t *parent, const char *name)
 Get or lookup a dentry for the given name. Will NOT traverse mountpoints.
 
uint64_t vfs_add_inode (inode_t *inode)
 Add a inode to the inode cache.
 
uint64_t vfs_add_dentry (dentry_t *dentry)
 Add a dentry to the dentry cache.
 
void vfs_remove_superblock (superblock_t *superblock)
 Remove a superblock from the superblock list.
 
void vfs_remove_inode (inode_t *inode)
 Remove an inode from the inode cache.
 
void vfs_remove_dentry (dentry_t *dentry)
 Remove a dentry from the dentry cache.
 
uint64_t vfs_walk (path_t *outPath, const pathname_t *pathname, walk_flags_t flags, process_t *process)
 Walk a pathname to a path, starting from the current process's working directory.
 
uint64_t vfs_walk_parent (path_t *outPath, const pathname_t *pathname, char *outLastName, walk_flags_t flags, process_t *process)
 Walk a pathname to its parent path, starting from the current process's working directory.
 
uint64_t vfs_walk_parent_and_child (path_t *outParent, path_t *outChild, const pathname_t *pathname, walk_flags_t flags, process_t *process)
 Walk a pathname to path and its parent path, starting from the current process's working directory.
 
bool vfs_is_name_valid (const char *name)
 Check if a name is valid.
 
file_tvfs_open (const pathname_t *pathname, process_t *process)
 Open a file.
 
uint64_t vfs_open2 (const pathname_t *pathname, file_t *files[2], process_t *process)
 Open one file, returning two file handles.
 
uint64_t vfs_read (file_t *file, void *buffer, uint64_t count)
 Read from a file.
 
uint64_t vfs_write (file_t *file, const void *buffer, uint64_t count)
 Write to a file.
 
uint64_t vfs_seek (file_t *file, int64_t offset, seek_origin_t origin)
 Seek in a file.
 
uint64_t vfs_ioctl (file_t *file, uint64_t request, void *argp, uint64_t size)
 Perform an ioctl operation on a file.
 
void * vfs_mmap (file_t *file, void *address, uint64_t length, pml_flags_t flags)
 Memory map a file.
 
uint64_t vfs_poll (poll_file_t *files, uint64_t amount, clock_t timeout)
 Poll multiple files.
 
uint64_t vfs_getdents (file_t *file, dirent_t *buffer, uint64_t count)
 Get directory entries from a directory file.
 
uint64_t vfs_stat (const pathname_t *pathname, stat_t *buffer, process_t *process)
 Get file information.
 
uint64_t vfs_link (const pathname_t *oldPathname, const pathname_t *newPathname, process_t *process)
 Make the same file appear twice in the filesystem.
 
uint64_t vfs_remove (const pathname_t *pathname, process_t *process)
 Remove a file or directory.
 

Typedef Documentation

◆ filesystem_t

typedef struct filesystem filesystem_t

Definition at line 19 of file vfs.h.