Bare API

ramfs/ramfs.h

Functions

ramfs_fs_t *ramfs_init(void)

Initialize filesystem and return pointer.

Returns:

ramfs_fs_t pointer or NULL on error

void ramfs_deinit(ramfs_fs_t *fs)

Tear down a filesystem.

Parameters:
  • fs[in] ramfs_fs_t pointer

ramfs_entry_t *ramfs_get_parent(ramfs_fs_t *fs, const char *path)

Get parent entry of path.

Parameters:
  • fs[in] ramfs_fs_t pointer

  • path[in] path string

Returns:

ramfs_entry_t or NULL if parent not found; note that the full path does not have to exist

ramfs_entry_t *ramfs_get_entry(ramfs_fs_t *fs, const char *path)

Get ramfs entry for path.

Parameters:
  • fs[in] ramfs_fs_t pointer

  • path[in] path string

Returns:

ramfs_entry_t or NULL if path was not found

char *ramfs_get_name(const ramfs_entry_t *entry)

Return entry name component.

Parameters:
  • entry[in] ramfs_entry_t pointer

Returns:

name string, caller is expected to free

char *ramfs_get_path(const ramfs_entry_t *entry)

Get path for ramfs entry.

Parameters:
  • entry[in] ramfs_entry_t pointer

Returns:

full path string or NULL if entry is NULL, caller is expected to free

int ramfs_is_dir(const ramfs_entry_t *entry)

Return if entry is a directory.

Parameters:
  • entry[in] ramfs_entry_t pointer

Returns:

1 if directory, 0 otherwise

int ramfs_is_file(const ramfs_entry_t *entry)

Return if entry is a file.

Parameters:
  • entry[in] ramfs_entry_t pointer

Returns:

1 if file, 0 otherwise

void ramfs_stat(ramfs_fs_t *fs, const ramfs_entry_t *entry, ramfs_stat_t *st)

Get information about a ramfs entry.

Parameters:
  • fs[in] ramfs_fs_t pointer

  • entry[in] ramfs_entry_t pointer

  • st[out] ramfs_stat_t structure

ramfs_entry_t *ramfs_create(ramfs_fs_t *fs, const char *path, int flags)

Create an empty file and return a file handle.

Parameters:
  • fs[in] ramfs_fs_t pointer

  • path[in] full path to file

  • flags[in] flags to pass to ramfs_open()

Returns:

created entry or NULL on error

int ramfs_truncate(ramfs_fs_t *fs, ramfs_entry_t *entry, size_t size)

Truncate an existing file.

Parameters:
  • fs[in] ramfs_fs_t pointer

  • entry[in] ramfs_entry_t pointer

  • length[in] length to truncate (or grow) to

Returns:

1 on success, 0 on failure

ramfs_fh_t *ramfs_open(ramfs_fs_t *fs, const ramfs_entry_t *entry, unsigned int flags)

Open a ramfs file object and return a file handle.

Parameters:
  • fs[in] ramfs_fs_t pointer

  • entry[in] ramfs_entry_t pointer

  • flags[in] open flags

Returns:

opened file handle or NULL if entry is NULL

void ramfs_close(ramfs_fh_t *fh)

Close an open file entry.

Parameters:
ssize_t ramfs_read(ramfs_fh_t *fh, char *buf, size_t len)

Read data from an open file.

Parameters:
  • fh[in] ramfs_fh_t handle

  • buf[out] buffer to read into

  • len[in] maximum number of bytes to read

Returns:

actual number of bytes read, zero if the end of file reached, or < 0 on error

ssize_t ramfs_write(ramfs_fh_t *fh, const char *buf, size_t len)

Write data to an open file.

Parameters:
  • fh[in] ramfs_fh_t handle

  • buf[in] buffer to write from

  • len[in] number of bytes to write

Returns:

number of bytes written, or < 0 on error

ssize_t ramfs_seek(ramfs_fh_t *fh, off_t offset, int mode)

Seek to a position within a file.

Parameters:
  • fh[in] ramfs_fh_t handle

  • offset[in] file position (relative or absolute)

  • mode[in] SEEK_SET, SEEK_CUR, or SEEK_END

Returns:

position in file, or -1 on error

size_t ramfs_tell(const ramfs_fh_t *fh)

Get the current file position in a file.

Parameters:
Returns:

current position in file

size_t ramfs_access(const ramfs_fh_t *fh, const void **buf)

Get raw memory for file.

Parameters:
  • fh[in] ramfs_fh_t handle

  • buf[out] pointer pointer to buf

Returns:

length of raw data

Free and delete a file on the filesystem.

Parameters:
  • entry[in] ramfs_entry_t pointer

Returns:

0 on success, -1 on error

int ramfs_rename(ramfs_fs_t *fs, const char *src, const char *dst)

Rename a file.

Parameters:
  • fs[in] ramfs_fs_t pointer

  • src[in] source file path

  • dst[in] destination file path

Returns:

0 on success, -1 on error

ramfs_dh_t *ramfs_opendir(ramfs_fs_t *fs, const ramfs_entry_t *entry)

Open a directory.

Parameters:
  • fs[in] ramfs_fs_t pointer

  • entry[in] ramfs_entry_t pointer

Returns:

directory handle or NULL on error

void ramfs_closedir(ramfs_dh_t *dh)

Close a directory.

Parameters:
const ramfs_entry_t *ramfs_readdir(ramfs_dh_t *dh)

Read the next entry from an open directory handle.

Parameters:
Returns:

ramfs_entry_t pointer or NULL on end

void ramfs_seekdir(ramfs_dh_t *dh, long loc)

Seek to a given directory location.

Parameters:
  • dh[in] ramfs_dh_t directory handle

  • loc[in] entry index to seek to

long ramfs_telldir(ramfs_dh_t *dh)

Return the current entry index.

Parameters:
Returns:

current directory index

ramfs_entry_t *ramfs_mkdir(ramfs_fs_t *fs, const char *name)

Make a directory.

Parameters:
  • fs[in] ramfs_fs_t pointer

  • path[in] directory path

Returns:

newly created entry handle

int ramfs_rmdir(ramfs_entry_t *entry)

Remove a directory. Directory must be empty.

Parameters:
  • entry – directory entry handle

Returns:

0 on success, -1 on failure

void ramfs_rmtree(ramfs_entry_t *entry)

Delete and free a directory tree.

Parameters:
  • entry – root entry to remove

Enums

enum ramfs_entry_type_t

Entry type.

Values:

enumerator RAMFS_ENTRY_TYPE_DIR
enumerator RAMFS_ENTRY_TYPE_FILE

Typedefs

typedef struct ramfs_fs_t ramfs_fs_t

A ramfs filesystem handle.

typedef struct ramfs_entry_t ramfs_entry_t

A ramfs filesystem entry.

Structs

struct ramfs_stat_t

Structure filled by the ramfs_stat function.

Public Members

ramfs_entry_type_t type

entry type

size_t size

file size

struct ramfs_dh_t

A ramfs directory handle.

Public Members

ramfs_fs_t *fs

filesystem handle

ramfs_entry_t *entry

directory >entry

struct ramfs_fh_t

A ramfs file handle.

Public Members

ramfs_fs_t *fs

filesystem handle

ramfs_entry_t *entry

file entry