Add support for Virtual File system Switch (VFS) by introducing mount point concept to Zephyr. This allows the applications to mount multiple file systems at different mount points (ex: "/fatfs" and "/nffs"). The mount point structure contains all the necessary info required to instantiate, mount and operate on file system. Decouple applications from directly accessing individual file systems API's or internal functions by introducing file system registration mechanism in VFS. Move the file system defination and mount responsibility to application so that application can decide which file system to use and where to mount. Signed-off-by: Ramakrishna Pallala <ramakrishna.pallala@intel.com>
72 lines
1.3 KiB
C
72 lines
1.3 KiB
C
/*
|
|
* Copyright (c) 2016 Intel Corporation.
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#ifndef _FS_INTERFACE_H_
|
|
#define _FS_INTERFACE_H_
|
|
|
|
#ifdef CONFIG_FAT_FILESYSTEM_ELM
|
|
#include <ff.h>
|
|
#endif
|
|
|
|
#ifdef CONFIG_FILE_SYSTEM_NFFS
|
|
#include <nffs/nffs.h>
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifdef CONFIG_FILE_SYSTEM_NFFS
|
|
#define MAX_FILE_NAME 256
|
|
#else /* FAT_FS */
|
|
#define MAX_FILE_NAME 12 /* Uses 8.3 SFN */
|
|
#endif
|
|
|
|
struct fs_mount_t;
|
|
|
|
/**
|
|
* @brief File object representing an open file
|
|
*
|
|
* @param fatfs_fp FATFS file object structure
|
|
* @param nffs_fp NFFS file object structure
|
|
* @param mp Pointer to mount point structure
|
|
*/
|
|
struct fs_file_t {
|
|
union {
|
|
#ifdef CONFIG_FAT_FILESYSTEM_ELM
|
|
FIL fatfs_fp;
|
|
#endif
|
|
#ifdef CONFIG_FILE_SYSTEM_NFFS
|
|
struct nffs_file *nffs_fp;
|
|
#endif
|
|
};
|
|
const struct fs_mount_t *mp;
|
|
};
|
|
|
|
/**
|
|
* @brief Directory object representing an open directory
|
|
*
|
|
* @param fatfs_dp FATFS directory object structure
|
|
* @param nffs_dp NFFS directory object structure
|
|
* @param mp Pointer to mount point structure
|
|
*/
|
|
struct fs_dir_t {
|
|
union {
|
|
#ifdef CONFIG_FAT_FILESYSTEM_ELM
|
|
DIR fatfs_dp;
|
|
#endif
|
|
#ifdef CONFIG_FILE_SYSTEM_NFFS
|
|
struct nffs_dir *nffs_dp;
|
|
#endif
|
|
};
|
|
const struct fs_mount_t *mp;
|
|
};
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _FS_INTERFACE_H_ */
|