KallistiOS git master
Independent SDK for the Sega Dreamcast
Loading...
Searching...
No Matches
fs_ext2.h File Reference

VFS interface for an ext2 filesystem. More...

#include <sys/cdefs.h>
#include <stdint.h>
#include <kos/blockdev.h>

Go to the source code of this file.

Macros

#define FS_EXT2_MOUNT_READONLY   0x00000000
 Mount read-only.
 
#define FS_EXT2_MOUNT_READWRITE   0x00000001
 Mount read-write.
 

Functions

int fs_ext2_init (void)
 Initialize fs_ext2.
 
int fs_ext2_shutdown (void)
 Shut down fs_ext2.
 
int fs_ext2_mount (const char *mp, kos_blockdev_t *dev, uint32_t flags)
 Mount an ext2 filesystem in the VFS.
 
int fs_ext2_unmount (const char *mp)
 Unmount an ext2 filesystem from the VFS.
 
int fs_ext2_sync (const char *mp)
 Sync an ext2 filesystem, flushing all pending writes to the block device.
 

Detailed Description

VFS interface for an ext2 filesystem.

This file defines the public interface to add support for the Second Extended Filesystem (ext2) to KOS' VFS. ext2 is one of the many filesystems that is natively supported by Linux, and was the main filesystem used by most Linux installations pretty much until the creation of the ext3 filesystem.

The KOS ext2 driver was designed with two purposes. First of all, this fs was added to provide a filesystem for use on SD cards used with the Dreamcast SD adapter. ext2 was chosen for this purpose for a bunch of reasons, but probably the biggest one was the non-patent-encumbered nature of ext2 and the availability of programs/drivers to read ext2 on most major OSes available for PCs today. The second purpose of this filesystem driver is to provide an alternative for fs_romdisk when swapping out disk images at runtime. Basically, if a disk image is useful to you, but caching it fully in memory is not important, then you could rig up a relatively simple interface with this filesystem driver.

Note that there is a lower-level interface sitting underneath of this layer. This lower-level interface (simply called ext2fs) should not generally be used by any normal applications. As of this point, it is completely non thread-safe and the fs_ext2 layer takes extreme care to overcome those issues with the lower-level interface. Over time, I may fix the thread- safety issues in ext2fs, but that is not particularly high on my priority list at the moment. There shouldn't really be a reason to work directly with the ext2fs layer anyway, as this layer should give you everything you need by interfacing with the VFS in the normal fashion.

There's one final note that I should make. Everything in fs_ext2 and ext2fs is licensed under the same license as the rest of KOS. None of it was derived from GPLed sources. Pretty much all of what's in ext2fs was written based on the documentation at http://www.nongnu.org/ext2-doc/ .

Author
Lawrence Sebald