KallistiOS git master
Independent SDK for the Sega Dreamcast
|
VFS interface for an ext2 filesystem. More...
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. | |
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/ .