1
0
Fork 0
forked from len0rd/rockbox

Allow mounting of any directory as the root directory.

Provide definitions for the macros:
* RB_ROOT_VOL_HIDDEN(v) to exclude certain items from the root.
* RB_ROOT_CONTENTS to return a string with the name of the
directory to mount in the root.

Defaults are in export/rbpaths.h

It's a bit much for those that don't need the full functionality.
Some conditional define can cut it back a lot to cut out things only
needed if alternate root mounts are required. I'm just not bothering
yet. The basic concept would be applied to all targets to keep file
code from forking too much.

Change-Id: I90b5c0a1c949283d3102c16734b0b6ac73901a30
This commit is contained in:
William Wilgus 2017-02-03 17:13:58 -05:00
parent 31fc46ded6
commit 5ef28cccf9
18 changed files with 592 additions and 205 deletions

View file

@ -72,16 +72,18 @@ enum fildes_and_obj_flags
/* used in descriptor and common */
FDO_BUSY = 0x0001, /* descriptor/object is in use */
/* only used in individual stream descriptor */
FD_WRITE = 0x0002, /* descriptor has write mode */
FD_WRONLY = 0x0004, /* descriptor is write mode only */
FD_APPEND = 0x0008, /* descriptor is append mode */
FD_VALID = 0x0002, /* descriptor is valid but not registered */
FD_WRITE = 0x0004, /* descriptor has write mode */
FD_WRONLY = 0x0008, /* descriptor is write mode only */
FD_APPEND = 0x0010, /* descriptor is append mode */
FD_NONEXIST = 0x8000, /* closed but not freed (uncombined) */
/* only used as common flags */
FO_DIRECTORY = 0x0010, /* fileobj is a directory */
FO_TRUNC = 0x0020, /* fileobj is opened to be truncated */
FO_REMOVED = 0x0040, /* fileobj was deleted while open */
FO_SINGLE = 0x0080, /* fileobj has only one stream open */
FDO_MASK = 0x00ff,
FO_DIRECTORY = 0x0020, /* fileobj is a directory */
FO_TRUNC = 0x0040, /* fileobj is opened to be truncated */
FO_REMOVED = 0x0080, /* fileobj was deleted while open */
FO_SINGLE = 0x0100, /* fileobj has only one stream open */
FO_MOUNTTARGET = 0x0200, /* fileobj kept open as a mount target */
FDO_MASK = 0x03ff,
FDO_CHG_MASK = FO_TRUNC, /* fileobj permitted external change */
/* bitflags that instruct various 'open' functions how to behave;
* saved in stream flags (only) but not used by manager */
@ -95,7 +97,9 @@ enum fildes_and_obj_flags
FF_CACHEONLY = 0x00200000, /* succeed only if in dircache */
FF_INFO = 0x00400000, /* return info on self */
FF_PARENTINFO = 0x00800000, /* return info on parent */
FF_MASK = 0x00ff0000,
FF_DEVPATH = 0x01000000, /* path is a device path, not root-based */
FF_NOFS = 0x02000000, /* no filesystem mounted here */
FF_MASK = 0x03ff0000,
};
/** Common data structures used throughout **/