Mistake on this page?
Report an issue in GitHub or email us
Public Member Functions | Static Public Member Functions | Protected Member Functions
FileSystem Class Referenceabstract

A filesystem object provides filesystem operations and file operations for the File and Dir classes on a block device. More...

#include <FileSystem.h>

Inheritance diagram for FileSystem:
FileSystemLike FileSystemHandle FileBase NonCopyable< FileSystemLike > NonCopyable< FileSystemHandle > NonCopyable< FileBase > FATFileSystem LittleFileSystem

Public Member Functions

 FileSystem (const char *name=NULL)
 FileSystem lifetime. More...
 
virtual int mount (BlockDevice *bd)=0
 Mounts a filesystem to a block device. More...
 
virtual int unmount ()=0
 Unmounts a filesystem from the underlying block device. More...
 
virtual int reformat (BlockDevice *bd=NULL)
 Reformats a filesystem, results in an empty and mounted filesystem. More...
 
virtual int remove (const char *path)
 Remove a file from the filesystem. More...
 
virtual int rename (const char *path, const char *newpath)
 Rename a file in the filesystem. More...
 
virtual int stat (const char *path, struct stat *st)
 Store information about the file in a stat structure. More...
 
virtual int mkdir (const char *path, mode_t mode)
 Create a directory in the filesystem. More...
 
virtual int statvfs (const char *path, struct statvfs *buf)
 Store information about the mounted filesystem in a statvfs structure. More...
 
FileHandleopen (const char *path, int flags)
 Open a file on the filesystem. More...
 
DirHandleopendir (const char *path)
 Open a directory on the filesystem. More...
 

Static Public Member Functions

static FileSystemget_default_instance ()
 Return the default filesystem. More...
 

Protected Member Functions

virtual int file_open (fs_file_t *file, const char *path, int flags)=0
 Open a file on the filesystem. More...
 
virtual int file_close (fs_file_t file)=0
 Close a file. More...
 
virtual ssize_t file_read (fs_file_t file, void *buffer, size_t size)=0
 Read the contents of a file into a buffer. More...
 
virtual ssize_t file_write (fs_file_t file, const void *buffer, size_t size)=0
 Write the contents of a buffer to a file. More...
 
virtual int file_sync (fs_file_t file)
 Flush any buffers associated with the file. More...
 
virtual int file_isatty (fs_file_t file)
 Check if the file in an interactive terminal device If so, line buffered behaviour is used by default. More...
 
virtual off_t file_seek (fs_file_t file, off_t offset, int whence)=0
 Move the file position to a given offset from from a given location. More...
 
virtual off_t file_tell (fs_file_t file)
 Get the file position of the file. More...
 
virtual void file_rewind (fs_file_t file)
 Rewind the file position to the beginning of the file. More...
 
virtual off_t file_size (fs_file_t file)
 Get the size of the file. More...
 
virtual int dir_open (fs_dir_t *dir, const char *path)
 Open a directory on the filesystem. More...
 
virtual int dir_close (fs_dir_t dir)
 Close a directory. More...
 
virtual ssize_t dir_read (fs_dir_t dir, struct dirent *ent)
 Read the next directory entry. More...
 
virtual void dir_seek (fs_dir_t dir, off_t offset)
 Set the current position of the directory. More...
 
virtual off_t dir_tell (fs_dir_t dir)
 Get the current position of the directory. More...
 
virtual void dir_rewind (fs_dir_t dir)
 Rewind the current position to the beginning of the directory. More...
 
virtual size_t dir_size (fs_dir_t dir)
 Get the sizeof the directory. More...
 
virtual int open (FileHandle **file, const char *path, int flags)
 Open a file on the filesystem. More...
 
virtual int open (DirHandle **dir, const char *path)
 Open a directory on the filesystem. More...
 

Detailed Description

A filesystem object provides filesystem operations and file operations for the File and Dir classes on a block device.

Implementations must provide at minimum file operations and mount operations for block devices.

Note
Synchronization level: Set by subclass

Definition at line 49 of file FileSystem.h.

Constructor & Destructor Documentation

FileSystem ( const char *  name = NULL)

FileSystem lifetime.

Parameters
nameName to add filesystem to tree as

Member Function Documentation

virtual int dir_close ( fs_dir_t  dir)
protectedvirtual

Close a directory.

Parameters
dirDir handle
Returns
0 on success, negative error code on failure

Reimplemented in LittleFileSystem, and FATFileSystem.

virtual int dir_open ( fs_dir_t *  dir,
const char *  path 
)
protectedvirtual

Open a directory on the filesystem.

Parameters
dirDestination for the handle to the directory
pathName of the directory to open
Returns
0 on success, negative error code on failure

Reimplemented in LittleFileSystem, and FATFileSystem.

virtual ssize_t dir_read ( fs_dir_t  dir,
struct dirent ent 
)
protectedvirtual

Read the next directory entry.

Parameters
dirDir handle
entThe directory entry to fill out
Returns
1 on reading a filename, 0 at end of directory, negative error on failure

Reimplemented in LittleFileSystem, and FATFileSystem.

virtual void dir_rewind ( fs_dir_t  dir)
protectedvirtual

Rewind the current position to the beginning of the directory.

Parameters
dirDir handle

Reimplemented in LittleFileSystem, and FATFileSystem.

virtual void dir_seek ( fs_dir_t  dir,
off_t  offset 
)
protectedvirtual

Set the current position of the directory.

Parameters
dirDir handle
offsetOffset of the location to seek to, must be a value returned from dir_tell

Reimplemented in LittleFileSystem, and FATFileSystem.

virtual size_t dir_size ( fs_dir_t  dir)
protectedvirtual

Get the sizeof the directory.

Parameters
dirDir handle
Returns
Number of files in the directory
virtual off_t dir_tell ( fs_dir_t  dir)
protectedvirtual

Get the current position of the directory.

Parameters
dirDir handle
Returns
Position of the directory that can be passed to dir_rewind

Reimplemented in LittleFileSystem, and FATFileSystem.

virtual int file_close ( fs_file_t  file)
protectedpure virtual

Close a file.

Parameters
fileFile handle
Returns
0 on success, negative error code on failure

Implemented in LittleFileSystem, and FATFileSystem.

virtual int file_isatty ( fs_file_t  file)
protectedvirtual

Check if the file in an interactive terminal device If so, line buffered behaviour is used by default.

Parameters
fileFile handle
Returns
True if the file is a terminal
virtual int file_open ( fs_file_t *  file,
const char *  path,
int  flags 
)
protectedpure virtual

Open a file on the filesystem.

Parameters
fileDestination for the handle to a newly created file
pathThe name of the file to open
flagsThe flags to open the file in, one of O_RDONLY, O_WRONLY, O_RDWR, bitwise or'd with one of O_CREAT, O_TRUNC, O_APPEND
Returns
0 on success, negative error code on failure

Implemented in LittleFileSystem, and FATFileSystem.

virtual ssize_t file_read ( fs_file_t  file,
void *  buffer,
size_t  size 
)
protectedpure virtual

Read the contents of a file into a buffer.

Parameters
fileFile handle
bufferThe buffer to read in to
sizeThe number of bytes to read
Returns
The number of bytes read, 0 at end of file, negative error on failure

Implemented in LittleFileSystem, and FATFileSystem.

virtual void file_rewind ( fs_file_t  file)
protectedvirtual

Rewind the file position to the beginning of the file.

Parameters
fileFile handle
Note
This is equivalent to file_seek(file, 0, FS_SEEK_SET)
virtual off_t file_seek ( fs_file_t  file,
off_t  offset,
int  whence 
)
protectedpure virtual

Move the file position to a given offset from from a given location.

Parameters
fileFile handle
offsetThe offset from whence to move to
whenceThe start of where to seek SEEK_SET to start from beginning of file, SEEK_CUR to start from current position in file, SEEK_END to start from end of file
Returns
The new offset of the file

Implemented in LittleFileSystem, and FATFileSystem.

virtual off_t file_size ( fs_file_t  file)
protectedvirtual

Get the size of the file.

Parameters
fileFile handle
Returns
Size of the file in bytes

Reimplemented in LittleFileSystem, and FATFileSystem.

virtual int file_sync ( fs_file_t  file)
protectedvirtual

Flush any buffers associated with the file.

Parameters
fileFile handle
Returns
0 on success, negative error code on failure

Reimplemented in LittleFileSystem, and FATFileSystem.

virtual off_t file_tell ( fs_file_t  file)
protectedvirtual

Get the file position of the file.

Parameters
fileFile handle
Returns
The current offset in the file

Reimplemented in LittleFileSystem, and FATFileSystem.

virtual ssize_t file_write ( fs_file_t  file,
const void *  buffer,
size_t  size 
)
protectedpure virtual

Write the contents of a buffer to a file.

Parameters
fileFile handle
bufferThe buffer to write from
sizeThe number of bytes to write
Returns
The number of bytes written, negative error on failure

Implemented in LittleFileSystem, and FATFileSystem.

static FileSystem* get_default_instance ( )
static

Return the default filesystem.

Returns the default FileSystem base on the default BlockDevice configuration. Use the components in target.json or application config to change the default block device and affect the default filesystem. SD block device => FAT filesystem SPIF block device => LITTLE filesystem DATAFLASH block device => LITTLE filesystem

An application can override all target settings by implementing FileSystem::get_default_instance() themselves - the default definition is weak, and calls get_target_default_instance().

virtual int mkdir ( const char *  path,
mode_t  mode 
)
virtual

Create a directory in the filesystem.

Parameters
pathThe name of the directory to create.
modeThe permissions with which to create the directory
Returns
0 on success, negative error code on failure

Reimplemented from FileSystemHandle.

Reimplemented in LittleFileSystem, and FATFileSystem.

virtual int mount ( BlockDevice bd)
pure virtual

Mounts a filesystem to a block device.

Parameters
bdBlockDevice to mount to
Returns
0 on success, negative error code on failure

Implemented in LittleFileSystem, and FATFileSystem.

FileHandle* open ( const char *  path,
int  flags 
)
inherited

Open a file on the filesystem.

Parameters
pathThe name of the file to open
flagsThe flags to open the file in, one of O_RDONLY, O_WRONLY, O_RDWR, bitwise or'd with one of O_CREAT, O_TRUNC, O_APPEND
Returns
A file handle on success, NULL on failure
Deprecated:
Replaced by int open(FileHandle **, ...) for propagating error codes

Definition at line 64 of file FileSystemLike.h.

virtual int open ( FileHandle **  file,
const char *  filename,
int  flags 
)
protectedvirtual

Open a file on the filesystem.

Parameters
fileDestination for the handle to a newly created file
filenameThe name of the file to open
flagsThe flags to open the file in, one of O_RDONLY, O_WRONLY, O_RDWR, bitwise or'd with one of O_CREAT, O_TRUNC, O_APPEND
Returns
0 on success, negative error code on failure

Implements FileSystemHandle.

virtual int open ( DirHandle **  dir,
const char *  path 
)
protectedvirtual

Open a directory on the filesystem.

Parameters
dirDestination for the handle to the directory
pathName of the directory to open
Returns
0 on success, negative error code on failure

Reimplemented from FileSystemHandle.

DirHandle* opendir ( const char *  path)
inherited

Open a directory on the filesystem.

Parameters
pathName of the directory to open
Returns
A directory handle on success, NULL on failure
Deprecated:
Replaced by int open(DirHandle **, ...) for propagating error codes

Definition at line 79 of file FileSystemLike.h.

virtual int reformat ( BlockDevice bd = NULL)
virtual

Reformats a filesystem, results in an empty and mounted filesystem.

Parameters
bdBlockDevice to reformat and mount. If NULL, the mounted block device will be used. Note: if mount fails, bd must be provided. Default: NULL
Returns
0 on success, negative error code on failure

Reimplemented in LittleFileSystem, and FATFileSystem.

virtual int remove ( const char *  path)
virtual

Remove a file from the filesystem.

Parameters
pathThe name of the file to remove.
Returns
0 on success, negative error code on failure

Reimplemented from FileSystemHandle.

Reimplemented in LittleFileSystem, and FATFileSystem.

virtual int rename ( const char *  path,
const char *  newpath 
)
virtual

Rename a file in the filesystem.

Parameters
pathThe name of the file to rename.
newpathThe name to rename it to
Returns
0 on success, negative error code on failure

Reimplemented from FileSystemHandle.

Reimplemented in LittleFileSystem, and FATFileSystem.

virtual int stat ( const char *  path,
struct stat st 
)
virtual

Store information about the file in a stat structure.

Parameters
pathThe name of the file to find information about
stThe stat buffer to write to
Returns
0 on success, negative error code on failure

Reimplemented from FileSystemHandle.

Reimplemented in LittleFileSystem, and FATFileSystem.

virtual int statvfs ( const char *  path,
struct statvfs buf 
)
virtual

Store information about the mounted filesystem in a statvfs structure.

Parameters
pathThe name of the file to find information about
bufThe stat buffer to write to
Returns
0 on success, negative error code on failure

Reimplemented from FileSystemHandle.

Reimplemented in LittleFileSystem, and FATFileSystem.

virtual int unmount ( )
pure virtual

Unmounts a filesystem from the underlying block device.

Returns
0 on success, negative error code on failure

Implemented in LittleFileSystem, and FATFileSystem.

Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.