Added buffers management to VFS.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@15223 27425a3e-05d8-49a3-a47f-9c15f0e5edd8
This commit is contained in:
parent
4dac93cf65
commit
613dec7ec7
|
@ -38,8 +38,22 @@
|
||||||
/**
|
/**
|
||||||
* @brief Maximum filename length.
|
* @brief Maximum filename length.
|
||||||
*/
|
*/
|
||||||
#if !defined(VFS_CFG_MAX_NAMELEN) || defined(__DOXYGEN__)
|
#if !defined(VFS_CFG_NAMELEN_MAX) || defined(__DOXYGEN__)
|
||||||
#define VFS_CFG_MAX_NAMELEN 15
|
#define VFS_CFG_NAMELEN_MAX 15
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Maximum paths length.
|
||||||
|
*/
|
||||||
|
#if !defined(VFS_CFG_PATHLEN_MAX) || defined(__DOXYGEN__)
|
||||||
|
#define VFS_CFG_PATHLEN_MAX 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Number of shared path buffers.
|
||||||
|
*/
|
||||||
|
#if !defined(VFS_CFG_PATHBUFS_NUM) || defined(__DOXYGEN__)
|
||||||
|
#define VFS_CFG_PATHBUFS_NUM 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
|
@ -38,8 +38,22 @@
|
||||||
/**
|
/**
|
||||||
* @brief Maximum filename length.
|
* @brief Maximum filename length.
|
||||||
*/
|
*/
|
||||||
#if !defined(VFS_CFG_MAX_NAMELEN) || defined(__DOXYGEN__)
|
#if !defined(VFS_CFG_NAMELEN_MAX) || defined(__DOXYGEN__)
|
||||||
#define VFS_CFG_MAX_NAMELEN 15
|
#define VFS_CFG_NAMELEN_MAX 15
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Maximum paths length.
|
||||||
|
*/
|
||||||
|
#if !defined(VFS_CFG_PATHLEN_MAX) || defined(__DOXYGEN__)
|
||||||
|
#define VFS_CFG_PATHLEN_MAX 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Number of shared path buffers.
|
||||||
|
*/
|
||||||
|
#if !defined(VFS_CFG_PATHBUFS_NUM) || defined(__DOXYGEN__)
|
||||||
|
#define VFS_CFG_PATHBUFS_NUM 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
|
@ -274,11 +274,13 @@ int main(void) {
|
||||||
/* Initializing an overlay VFS object overlaying a FatFS driver,
|
/* Initializing an overlay VFS object overlaying a FatFS driver,
|
||||||
no need for names, both are root.*/
|
no need for names, both are root.*/
|
||||||
drvOverlayObjectInit(&root_overlay_driver,
|
drvOverlayObjectInit(&root_overlay_driver,
|
||||||
drvFatFSObjectInit(&root_driver, ""), "");
|
drvFatFSObjectInit(&root_driver, ""),
|
||||||
|
NULL,
|
||||||
|
"");
|
||||||
#else
|
#else
|
||||||
/* Initializing an overlay VFS object as a root, no overlaid driver,
|
/* Initializing an overlay VFS object as a root, no overlaid driver,
|
||||||
no need for a name.*/
|
no need for a name.*/
|
||||||
drvOverlayObjectInit(&root_overlay_driver, NULL, "");
|
drvOverlayObjectInit(&root_overlay_driver, NULL, NULL, "");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Registering a streams VFS driver on the VFS overlay root as "/dev".*/
|
/* Registering a streams VFS driver on the VFS overlay root as "/dev".*/
|
||||||
|
|
|
@ -325,8 +325,8 @@ static msg_t node_dir_next(void *instance, vfs_node_info_t *nip) {
|
||||||
else {
|
else {
|
||||||
nip->attr = (vfs_nodeattr_t)fip->fattrib;
|
nip->attr = (vfs_nodeattr_t)fip->fattrib;
|
||||||
nip->size = (vfs_offset_t)fip->fsize;
|
nip->size = (vfs_offset_t)fip->fsize;
|
||||||
strncpy(nip->name, fip->fname, VFS_CFG_MAX_NAMELEN);
|
strncpy(nip->name, fip->fname, VFS_CFG_NAMELEN_MAX);
|
||||||
nip->name[VFS_CFG_MAX_NAMELEN] = '\0';
|
nip->name[VFS_CFG_NAMELEN_MAX] = '\0';
|
||||||
err = VFS_RET_SUCCESS;
|
err = VFS_RET_SUCCESS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,7 +91,7 @@ static struct {
|
||||||
static msg_t match_driver(vfs_overlay_driver_c *odp,
|
static msg_t match_driver(vfs_overlay_driver_c *odp,
|
||||||
const char **pathp,
|
const char **pathp,
|
||||||
vfs_driver_c **vdpp) {
|
vfs_driver_c **vdpp) {
|
||||||
char fname[VFS_CFG_MAX_NAMELEN + 1];
|
char fname[VFS_CFG_NAMELEN_MAX + 1];
|
||||||
msg_t err;
|
msg_t err;
|
||||||
vfs_driver_c **pp;
|
vfs_driver_c **pp;
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ static msg_t match_driver(vfs_overlay_driver_c *odp,
|
||||||
/* Searching among registered drivers.*/
|
/* Searching among registered drivers.*/
|
||||||
pp = &odp->drivers[0];
|
pp = &odp->drivers[0];
|
||||||
while (pp < &odp->drivers[odp->next_driver]) {
|
while (pp < &odp->drivers[odp->next_driver]) {
|
||||||
if (strncmp(fname, (*pp)->rootname, VFS_CFG_MAX_NAMELEN) == 0) {
|
if (strncmp(fname, (*pp)->rootname, VFS_CFG_NAMELEN_MAX) == 0) {
|
||||||
*vdpp = *pp;
|
*vdpp = *pp;
|
||||||
return VFS_RET_SUCCESS;
|
return VFS_RET_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -300,6 +300,7 @@ void __drv_overlay_init(void) {
|
||||||
*
|
*
|
||||||
* @param[out] vodp pointer to a @p vfs_overlay_driver_c structure
|
* @param[out] vodp pointer to a @p vfs_overlay_driver_c structure
|
||||||
* @param[out] overlaid_drv pointer to a driver to be overlaid
|
* @param[out] overlaid_drv pointer to a driver to be overlaid
|
||||||
|
* @param[out] path_prefix prefix to be added to the paths or @p NULL
|
||||||
* @param[in] rootname name to be attributed to this object
|
* @param[in] rootname name to be attributed to this object
|
||||||
* @return A pointer to this initialized object.
|
* @return A pointer to this initialized object.
|
||||||
*
|
*
|
||||||
|
@ -307,11 +308,13 @@ void __drv_overlay_init(void) {
|
||||||
*/
|
*/
|
||||||
vfs_driver_c *drvOverlayObjectInit(vfs_overlay_driver_c *vodp,
|
vfs_driver_c *drvOverlayObjectInit(vfs_overlay_driver_c *vodp,
|
||||||
vfs_driver_c *overlaid_drv,
|
vfs_driver_c *overlaid_drv,
|
||||||
|
const char *path_prefix,
|
||||||
const char *rootname) {
|
const char *rootname) {
|
||||||
|
|
||||||
__base_object_objinit_impl(vodp, &driver_vmt);
|
__base_object_objinit_impl(vodp, &driver_vmt);
|
||||||
vodp->rootname = rootname;
|
vodp->rootname = rootname;
|
||||||
vodp->overlaid_drv = overlaid_drv;
|
vodp->overlaid_drv = overlaid_drv;
|
||||||
|
vodp->path_prefix = path_prefix;
|
||||||
vodp->next_driver = 0U;
|
vodp->next_driver = 0U;
|
||||||
|
|
||||||
return (vfs_driver_c *)vodp;
|
return (vfs_driver_c *)vodp;
|
||||||
|
@ -320,8 +323,8 @@ vfs_driver_c *drvOverlayObjectInit(vfs_overlay_driver_c *vodp,
|
||||||
/**
|
/**
|
||||||
* @brief Registers a VFS driver as an overlay.
|
* @brief Registers a VFS driver as an overlay.
|
||||||
*
|
*
|
||||||
* @param[in] vodp pointer to a @p vfs_overlay_driver_c structure
|
* @param[in] vodp pointer to a @p vfs_overlay_driver_c structure
|
||||||
* @return The operation result.
|
* @return The operation result.
|
||||||
*
|
*
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -109,6 +109,8 @@ typedef struct vfs_overlay_dir_node {
|
||||||
__vfs_driver_data \
|
__vfs_driver_data \
|
||||||
/* Driver to be overlaid or NULL.*/ \
|
/* Driver to be overlaid or NULL.*/ \
|
||||||
vfs_driver_c *overlaid_drv; \
|
vfs_driver_c *overlaid_drv; \
|
||||||
|
/* Path prefix for the overlaid driver or NULL.*/ \
|
||||||
|
const char *path_prefix ; \
|
||||||
/* Next registration slot.*/ \
|
/* Next registration slot.*/ \
|
||||||
unsigned next_driver; \
|
unsigned next_driver; \
|
||||||
/* Registration slots.*/ \
|
/* Registration slots.*/ \
|
||||||
|
@ -146,6 +148,7 @@ extern "C" {
|
||||||
void __drv_overlay_init(void);
|
void __drv_overlay_init(void);
|
||||||
vfs_driver_c *drvOverlayObjectInit(vfs_overlay_driver_c *vodp,
|
vfs_driver_c *drvOverlayObjectInit(vfs_overlay_driver_c *vodp,
|
||||||
vfs_driver_c *overlaid_drv,
|
vfs_driver_c *overlaid_drv,
|
||||||
|
const char *path_prefix,
|
||||||
const char *rootname);
|
const char *rootname);
|
||||||
msg_t drvOverlayRegisterDriver(vfs_overlay_driver_c *vodp,
|
msg_t drvOverlayRegisterDriver(vfs_overlay_driver_c *vodp,
|
||||||
vfs_driver_c *vdp);
|
vfs_driver_c *vdp);
|
||||||
|
|
|
@ -159,7 +159,7 @@ static msg_t drv_open_file(void *instance,
|
||||||
(void)oflag;
|
(void)oflag;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
char fname[VFS_CFG_MAX_NAMELEN + 1];
|
char fname[VFS_CFG_NAMELEN_MAX + 1];
|
||||||
|
|
||||||
err = vfs_parse_match_separator(&path);
|
err = vfs_parse_match_separator(&path);
|
||||||
VFS_BREAK_ON_ERROR(err);
|
VFS_BREAK_ON_ERROR(err);
|
||||||
|
@ -172,7 +172,7 @@ static msg_t drv_open_file(void *instance,
|
||||||
|
|
||||||
dsep = &drvp->streams[0];
|
dsep = &drvp->streams[0];
|
||||||
while (dsep->name != NULL) {
|
while (dsep->name != NULL) {
|
||||||
if (strncmp(fname, dsep->name, VFS_CFG_MAX_NAMELEN) == 0) {
|
if (strncmp(fname, dsep->name, VFS_CFG_NAMELEN_MAX) == 0) {
|
||||||
vfs_streams_file_node_c *sfnp;
|
vfs_streams_file_node_c *sfnp;
|
||||||
|
|
||||||
sfnp = chPoolAlloc(&vfs_streams_driver_static.file_nodes_pool);
|
sfnp = chPoolAlloc(&vfs_streams_driver_static.file_nodes_pool);
|
||||||
|
|
|
@ -67,7 +67,7 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
/* Dependencies.*/
|
/* Dependencies.*/
|
||||||
#include "osal.h"
|
#include "ch.h"
|
||||||
#include "oop_base_object.h"
|
#include "oop_base_object.h"
|
||||||
#include "oop_referenced_object.h"
|
#include "oop_referenced_object.h"
|
||||||
#include "oop_synchronized_object.h"
|
#include "oop_synchronized_object.h"
|
||||||
|
@ -84,6 +84,7 @@
|
||||||
/* Base VFS headers.*/
|
/* Base VFS headers.*/
|
||||||
#include "vfserrors.h"
|
#include "vfserrors.h"
|
||||||
#include "vfsparser.h"
|
#include "vfsparser.h"
|
||||||
|
#include "vfsbuffers.h"
|
||||||
#include "vfsnodes.h"
|
#include "vfsnodes.h"
|
||||||
#include "vfsdrivers.h"
|
#include "vfsdrivers.h"
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,72 @@
|
||||||
|
/*
|
||||||
|
ChibiOS - Copyright (C) 2006,2007,2008,2009,2010,2011,2012,2013,2014,
|
||||||
|
2015,2016,2017,2018,2019,2020,2021 Giovanni Di Sirio.
|
||||||
|
|
||||||
|
This file is part of ChibiOS.
|
||||||
|
|
||||||
|
ChibiOS is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation version 3 of the License.
|
||||||
|
|
||||||
|
ChibiOS is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file vfs/include/vfsbuffers.h
|
||||||
|
* @brief VFS header file.
|
||||||
|
* @details VFS shared path buffers header file.
|
||||||
|
*
|
||||||
|
* @addtogroup VFS_BUFFERS
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef VFS_BUFFERS_H
|
||||||
|
#define VFS_BUFFERS_H
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Module constants. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Module pre-compile time settings. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Derived constants and error checks. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Module data structures and types. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Module macros. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* External declarations. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
void __vfs_buffers_init(void);
|
||||||
|
char *vfs_buffer_take(void);
|
||||||
|
void vfs_buffer_release(char *buf);
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Module inline functions. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
#endif /* VFS_BUFFERS_H */
|
||||||
|
|
||||||
|
/** @} */
|
|
@ -49,12 +49,28 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Configuration options checks.*/
|
/* Configuration options checks.*/
|
||||||
#if !defined(VFS_CFG_MAX_NAMELEN)
|
#if !defined(VFS_CFG_NAMELEN_MAX)
|
||||||
#error "VFS_CFG_MAX_NAMELEN not defined in vfsconf.h"
|
#error "VFS_CFG_NAMELEN_MAX not defined in vfsconf.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if VFS_CFG_MAX_NAMELEN < 12
|
#if VFS_CFG_NAMELEN_MAX < 12
|
||||||
#error "invalid value for VFS_CFG_MAX_NAMELEN"
|
#error "invalid value for VFS_CFG_NAMELEN_MAX"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(VFS_CFG_PATHLEN_MAX)
|
||||||
|
#error "VFS_CFG_PATHLEN_MAX not defined in vfsconf.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if VFS_CFG_PATHLEN_MAX < 63
|
||||||
|
#error "invalid value for VFS_CFG_PATHLEN_MAX"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(VFS_CFG_PATHBUFS_NUM)
|
||||||
|
#error "VFS_CFG_PATHBUFS_NUM not defined in vfsconf.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if VFS_CFG_PATHBUFS_NUM < 1
|
||||||
|
#error "invalid value for VFS_CFG_PATHBUFS_NUM"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(VFS_CFG_ENABLE_DRV_OVERLAY)
|
#if !defined(VFS_CFG_ENABLE_DRV_OVERLAY)
|
||||||
|
|
|
@ -85,7 +85,7 @@ typedef struct vfs_node_info {
|
||||||
/**
|
/**
|
||||||
* @brief Name of the node.
|
* @brief Name of the node.
|
||||||
*/
|
*/
|
||||||
char name[VFS_CFG_MAX_NAMELEN + 1];
|
char name[VFS_CFG_NAMELEN_MAX + 1];
|
||||||
} vfs_node_info_t;
|
} vfs_node_info_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -60,6 +60,9 @@
|
||||||
*/
|
*/
|
||||||
void vfsInit(void) {
|
void vfsInit(void) {
|
||||||
|
|
||||||
|
/* Shared buffers manager initialization.*/
|
||||||
|
__vfs_buffers_init();
|
||||||
|
|
||||||
#if VFS_CFG_ENABLE_DRV_OVERLAY == TRUE
|
#if VFS_CFG_ENABLE_DRV_OVERLAY == TRUE
|
||||||
__drv_overlay_init();
|
__drv_overlay_init();
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -0,0 +1,104 @@
|
||||||
|
/*
|
||||||
|
ChibiOS - Copyright (C) 2006,2007,2008,2009,2010,2011,2012,2013,2014,
|
||||||
|
2015,2016,2017,2018,2019,2020,2021 Giovanni Di Sirio.
|
||||||
|
|
||||||
|
This file is part of ChibiOS.
|
||||||
|
|
||||||
|
ChibiOS is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation version 3 of the License.
|
||||||
|
|
||||||
|
ChibiOS is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file vfs/src/vfsbuffers.c
|
||||||
|
* @brief VFS shared path buffers code.
|
||||||
|
*
|
||||||
|
* @addtogroup VFS_BUFFERS
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "vfs.h"
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Module local definitions. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Module exported variables. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Module local types. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Module local variables. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief VFS static data.
|
||||||
|
*/
|
||||||
|
static struct {
|
||||||
|
/**
|
||||||
|
* @brief Guarded pool of path buffers.
|
||||||
|
*/
|
||||||
|
guarded_memory_pool_t path_buffers_pool;
|
||||||
|
/**
|
||||||
|
* @brief Shared path buffers.
|
||||||
|
*/
|
||||||
|
char path_buffers[VFS_CFG_PATHBUFS_NUM]
|
||||||
|
[VFS_CFG_PATHLEN_MAX + 1];
|
||||||
|
} vfs_buffers_static;
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Module local functions. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* Module exported functions. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief VFS initialization.
|
||||||
|
*
|
||||||
|
* @init
|
||||||
|
*/
|
||||||
|
void __vfs_buffers_init(void) {
|
||||||
|
|
||||||
|
chGuardedPoolObjectInit(&vfs_buffers_static.path_buffers_pool,
|
||||||
|
VFS_CFG_PATHLEN_MAX + 1);
|
||||||
|
chGuardedPoolLoadArray(&vfs_buffers_static.path_buffers_pool,
|
||||||
|
&vfs_buffers_static.path_buffers[0],
|
||||||
|
VFS_CFG_PATHBUFS_NUM);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Claims a path buffer, waiting if not available.
|
||||||
|
*
|
||||||
|
* @return Pointer to the taken buffer.
|
||||||
|
*/
|
||||||
|
char *vfs_buffer_take(void) {
|
||||||
|
|
||||||
|
return (char *)chGuardedPoolAllocTimeout(&vfs_buffers_static.path_buffers_pool,
|
||||||
|
TIME_INFINITE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Releases a path buffer.
|
||||||
|
*
|
||||||
|
* @param[in] buf Buffer to be released.
|
||||||
|
*/
|
||||||
|
void vfs_buffer_release(char *buf) {
|
||||||
|
|
||||||
|
chGuardedPoolFree(&vfs_buffers_static.path_buffers_pool, (void *)buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @} */
|
|
@ -128,7 +128,7 @@ msg_t vfs_parse_filename(const char **pathp, char *fname) {
|
||||||
return VFS_RET_ENOENT;
|
return VFS_RET_ENOENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (n > VFS_CFG_MAX_NAMELEN) {
|
if (n > VFS_CFG_NAMELEN_MAX) {
|
||||||
return VFS_RET_ENOENT;
|
return VFS_RET_ENOENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,8 +38,22 @@
|
||||||
/**
|
/**
|
||||||
* @brief Maximum filename length.
|
* @brief Maximum filename length.
|
||||||
*/
|
*/
|
||||||
#if !defined(VFS_CFG_MAX_NAMELEN) || defined(__DOXYGEN__)
|
#if !defined(VFS_CFG_NAMELEN_MAX) || defined(__DOXYGEN__)
|
||||||
#define VFS_CFG_MAX_NAMELEN 15
|
#define VFS_CFG_NAMELEN_MAX 15
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Maximum paths length.
|
||||||
|
*/
|
||||||
|
#if !defined(VFS_CFG_PATHLEN_MAX) || defined(__DOXYGEN__)
|
||||||
|
#define VFS_CFG_PATHLEN_MAX 1023
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Number of shared path buffers.
|
||||||
|
*/
|
||||||
|
#if !defined(VFS_CFG_PATHBUFS_NUM) || defined(__DOXYGEN__)
|
||||||
|
#define VFS_CFG_PATHBUFS_NUM 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
# List of all the ChibiOS/VFS files.
|
# List of all the ChibiOS/VFS files.
|
||||||
VFSSRC := $(CHIBIOS)/os/vfs/src/vfsparser.c \
|
VFSSRC := $(CHIBIOS)/os/vfs/src/vfsparser.c \
|
||||||
|
$(CHIBIOS)/os/vfs/src/vfsbuffers.c \
|
||||||
$(CHIBIOS)/os/vfs/src/vfs.c \
|
$(CHIBIOS)/os/vfs/src/vfs.c \
|
||||||
$(CHIBIOS)/os/vfs/drivers/fatfs/drvfatfs.c \
|
$(CHIBIOS)/os/vfs/drivers/fatfs/drvfatfs.c \
|
||||||
$(CHIBIOS)/os/vfs/drivers/overlay/drvoverlay.c \
|
$(CHIBIOS)/os/vfs/drivers/overlay/drvoverlay.c \
|
||||||
|
|
Loading…
Reference in New Issue