PatchworkOS  321f6ec
A non-POSIX operating system.
Loading...
Searching...
No Matches
ramfs.c File Reference
#include <kernel/fs/ramfs.h>
#include <kernel/fs/dentry.h>
#include <kernel/fs/file.h>
#include <kernel/fs/filesystem.h>
#include <kernel/fs/inode.h>
#include <kernel/fs/mount.h>
#include <kernel/fs/namespace.h>
#include <kernel/fs/path.h>
#include <kernel/fs/sysfs.h>
#include <kernel/fs/vfs.h>
#include <kernel/init/boot_info.h>
#include <kernel/log/log.h>
#include <kernel/log/panic.h>
#include <kernel/sched/sched.h>
#include <kernel/sync/lock.h>
#include <kernel/sync/mutex.h>
#include <kernel/utils/ref.h>
#include <assert.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <sys/io.h>
#include <sys/list.h>
#include <sys/math.h>
Include dependency graph for ramfs.c:

Go to the source code of this file.

Functions

static inode_tramfs_inode_new (superblock_t *superblock, inode_type_t type, void *buffer, uint64_t size)
 
static void ramfs_dentry_add (dentry_t *dentry)
 
static void ramfs_dentry_remove (dentry_t *dentry)
 
static uint64_t ramfs_read (file_t *file, void *buffer, uint64_t count, uint64_t *offset)
 
static uint64_t ramfs_write (file_t *file, const void *buffer, uint64_t count, uint64_t *offset)
 
static uint64_t ramfs_create (inode_t *dir, dentry_t *target, mode_t mode)
 
static void ramfs_truncate (inode_t *inode)
 
static uint64_t ramfs_link (inode_t *dir, dentry_t *old, dentry_t *target)
 
static uint64_t ramfs_remove (inode_t *dir, dentry_t *target, mode_t mode)
 
static void ramfs_inode_cleanup (inode_t *inode)
 
static void ramfs_superblock_cleanup (superblock_t *superblock)
 
static dentry_tramfs_load_file (superblock_t *superblock, dentry_t *parent, const char *name, const boot_file_t *in)
 
static dentry_tramfs_load_dir (superblock_t *superblock, dentry_t *parent, const char *name, const boot_dir_t *in)
 
static dentry_tramfs_mount (filesystem_t *fs, const char *devName, void *private)
 
void ramfs_init (void)
 Registers the ramfs filesystem and mounts it as the root filesystem.
 

Variables

static mount_tmount = NULL
 
static file_ops_t fileOps
 
static inode_ops_t inodeOps
 
static dentry_ops_t dentryOps
 
static superblock_ops_t superOps
 
static filesystem_t ramfs
 

Function Documentation

◆ ramfs_inode_new()

static inode_t * ramfs_inode_new ( superblock_t superblock,
inode_type_t  type,
void *  buffer,
uint64_t  size 
)
static

Definition at line 292 of file ramfs.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ramfs_dentry_add()

static void ramfs_dentry_add ( dentry_t dentry)
static

Definition at line 32 of file ramfs.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ramfs_dentry_remove()

static void ramfs_dentry_remove ( dentry_t dentry)
static

Definition at line 42 of file ramfs.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ramfs_read()

static uint64_t ramfs_read ( file_t file,
void *  buffer,
uint64_t  count,
uint64_t offset 
)
static

Definition at line 52 of file ramfs.c.

◆ ramfs_write()

static uint64_t ramfs_write ( file_t file,
const void *  buffer,
uint64_t  count,
uint64_t offset 
)
static

Definition at line 64 of file ramfs.c.

Here is the call graph for this function:

◆ ramfs_create()

static uint64_t ramfs_create ( inode_t dir,
dentry_t target,
mode_t  mode 
)
static

Definition at line 90 of file ramfs.c.

Here is the call graph for this function:

◆ ramfs_truncate()

static void ramfs_truncate ( inode_t inode)
static

Definition at line 107 of file ramfs.c.

Here is the call graph for this function:

◆ ramfs_link()

static uint64_t ramfs_link ( inode_t dir,
dentry_t old,
dentry_t target 
)
static

Definition at line 119 of file ramfs.c.

Here is the call graph for this function:

◆ ramfs_remove()

static uint64_t ramfs_remove ( inode_t dir,
dentry_t target,
mode_t  mode 
)
static

Definition at line 129 of file ramfs.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ramfs_inode_cleanup()

static void ramfs_inode_cleanup ( inode_t inode)
static

Definition at line 163 of file ramfs.c.

Here is the call graph for this function:

◆ ramfs_superblock_cleanup()

static void ramfs_superblock_cleanup ( superblock_t superblock)
static

Definition at line 185 of file ramfs.c.

Here is the call graph for this function:

◆ ramfs_load_file()

static dentry_t * ramfs_load_file ( superblock_t superblock,
dentry_t parent,
const char *  name,
const boot_file_t in 
)
static

Definition at line 196 of file ramfs.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ramfs_load_dir()

static dentry_t * ramfs_load_dir ( superblock_t superblock,
dentry_t parent,
const char *  name,
const boot_dir_t in 
)
static

Definition at line 219 of file ramfs.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ramfs_mount()

static dentry_t * ramfs_mount ( filesystem_t fs,
const char *  devName,
void *  private 
)
static

Definition at line 256 of file ramfs.c.

Here is the call graph for this function:

Variable Documentation

◆ mount

mount_t* mount = NULL
static

Definition at line 28 of file ramfs.c.

◆ fileOps

file_ops_t fileOps
static
Initial value:
= {
.read = ramfs_read,
.write = ramfs_write,
}
uint64_t file_generic_seek(file_t *file, int64_t offset, seek_origin_t origin)
Helper function for basic seeking.
Definition file.c:92
static uint64_t ramfs_write(file_t *file, const void *buffer, uint64_t count, uint64_t *offset)
Definition ramfs.c:64
static uint64_t ramfs_read(file_t *file, void *buffer, uint64_t count, uint64_t *offset)
Definition ramfs.c:52

Definition at line 84 of file ramfs.c.

◆ inodeOps

inode_ops_t inodeOps
static
Initial value:
= {
.create = ramfs_create,
.truncate = ramfs_truncate,
.link = ramfs_link,
.remove = ramfs_remove,
.cleanup = ramfs_inode_cleanup,
}
static void ramfs_truncate(inode_t *inode)
Definition ramfs.c:107
static void ramfs_inode_cleanup(inode_t *inode)
Definition ramfs.c:163
static uint64_t ramfs_link(inode_t *dir, dentry_t *old, dentry_t *target)
Definition ramfs.c:119
static uint64_t ramfs_create(inode_t *dir, dentry_t *target, mode_t mode)
Definition ramfs.c:90
static uint64_t ramfs_remove(inode_t *dir, dentry_t *target, mode_t mode)
Definition ramfs.c:129

Definition at line 173 of file ramfs.c.

◆ dentryOps

dentry_ops_t dentryOps
static
Initial value:
= {
}
uint64_t dentry_generic_getdents(dentry_t *dentry, dirent_t *buffer, uint64_t count, uint64_t *offset, mode_t mode)
Helper function for a basic getdents.
Definition dentry.c:345

Definition at line 181 of file ramfs.c.

◆ superOps

superblock_ops_t superOps
static
Initial value:
= {
}
static void ramfs_superblock_cleanup(superblock_t *superblock)
Definition ramfs.c:185

Definition at line 192 of file ramfs.c.

◆ ramfs

filesystem_t ramfs
static
Initial value:
= {
.name = RAMFS_NAME,
.mount = ramfs_mount,
}
#define RAMFS_NAME
The name of the ramfs filesystem.
Definition ramfs.h:26
static dentry_t * ramfs_mount(filesystem_t *fs, const char *devName, void *private)
Definition ramfs.c:256

Definition at line 322 of file ramfs.c.