diff --git a/demos/STM32/RT-STM32G474RE-NUCLEO64-SB_HOST_STATIC/main.c b/demos/STM32/RT-STM32G474RE-NUCLEO64-SB_HOST_STATIC/main.c index 04a666ab1..2eb68884b 100644 --- a/demos/STM32/RT-STM32G474RE-NUCLEO64-SB_HOST_STATIC/main.c +++ b/demos/STM32/RT-STM32G474RE-NUCLEO64-SB_HOST_STATIC/main.c @@ -72,7 +72,7 @@ static const sb_config_t sb_config1 = { .writeable = true } }, - .vfs_driver = (vfs_driver_c *)&root_overlay_driver +// .vfs_driver = (vfs_driver_c *)&root_overlay_driver }; /* Sandbox 2 configuration.*/ @@ -89,7 +89,7 @@ static const sb_config_t sb_config2 = { .writeable = true } }, - .vfs_driver = (vfs_driver_c *)&root_overlay_driver +// .vfs_driver = (vfs_driver_c *)&root_overlay_driver }; /* Sandbox objects.*/ diff --git a/os/sb/host/sb.h b/os/sb/host/sb.h index 30dd39f06..7e5abd47b 100644 --- a/os/sb/host/sb.h +++ b/os/sb/host/sb.h @@ -225,28 +225,6 @@ typedef struct { * @brief VFS driver associated to the sandbox as root. */ vfs_driver_c *vfs_driver; -#else - /** - * @brief Sandbox STDIN stream. - * @note Set this to @p NULL if standard I/O is not needed. - * @note By design you can use HAL streams here, you need to use - * a cast however. - */ - SandboxStream *stdin_stream; - /** - * @brief Sandbox STDOUT stream. - * @note Set this to @p NULL if standard I/O is not needed. - * @note By design you can use HAL streams here, you need to use - * a cast however. - */ - SandboxStream *stdout_stream; - /** - * @brief Sandbox STDERR stream. - * @note Set this to @p NULL if standard I/O is not needed. - * @note By design you can use HAL streams here, you need to use - * a cast however. - */ - SandboxStream *stderr_stream; #endif } sb_config_t; diff --git a/os/sb/host/sbapi.c b/os/sb/host/sbapi.c index fbf5dea3c..f44e46b88 100644 --- a/os/sb/host/sbapi.c +++ b/os/sb/host/sbapi.c @@ -40,7 +40,9 @@ * @name Standard API handlers * @{ */ +#if (SB_CFG_ENABLE_VFS == TRUE) || defined(__DOXYGEN__) #define SB_SVC0_HANDLER sb_api_stdio +#endif #define SB_SVC1_HANDLER sb_api_exit #define SB_SVC2_HANDLER sb_api_get_systime #define SB_SVC3_HANDLER sb_api_get_frequency @@ -976,6 +978,7 @@ void __sb_abort(msg_t msg) { chSysHalt("zombies"); } +#if (SB_CFG_ENABLE_VFS == TRUE) || defined(__DOXYGEN__) void sb_api_stdio(struct port_extctx *ectxp) { switch (ectxp->r0) { @@ -1029,6 +1032,7 @@ void sb_api_stdio(struct port_extctx *ectxp) { break; } } +#endif /* SB_CFG_ENABLE_VFS == TRUE */ void sb_api_exit(struct port_extctx *ectxp) { diff --git a/os/sb/host/sbposix.c b/os/sb/host/sbposix.c index 01337fbdf..e30902482 100644 --- a/os/sb/host/sbposix.c +++ b/os/sb/host/sbposix.c @@ -25,11 +25,12 @@ * @{ */ -#include - -#include "ch.h" #include "sb.h" +#if (SB_CFG_ENABLE_VFS == TRUE) || defined(__DOXYGEN__) + +#include + /*===========================================================================*/ /* Module local definitions. */ /*===========================================================================*/ @@ -50,7 +51,6 @@ /* Module local functions. */ /*===========================================================================*/ -#if (SB_CFG_ENABLE_VFS == TRUE) || defined(__DOXYGEN__) static msg_t create_descriptor(sb_ioblock_t *iop, vfs_node_c *np) { unsigned fd; @@ -65,13 +65,11 @@ static msg_t create_descriptor(sb_ioblock_t *iop, return CH_RET_EMFILE; } -#endif /* SB_CFG_ENABLE_VFS == TRUE */ /*===========================================================================*/ /* Module exported functions. */ /*===========================================================================*/ -#if (SB_CFG_ENABLE_VFS == TRUE) || defined(__DOXYGEN__) int sb_posix_open(const char *path, int flags) { sb_class_t *sbp = (sb_class_t *)chThdGetSelfX()->ctx.syscall.p; vfs_node_c *np = NULL; @@ -322,87 +320,6 @@ int sb_posix_getcwd(char *buf, size_t size) { return vfsDrvGetCurrentDirectory(sbp->config->vfs_driver, buf, size); } -#else /* Fallbacks for when there is no VFS.*/ -uint32_t sb_posix_open(const char *pathname, uint32_t flags) { - - (void)pathname; - (void)flags; - - return SB_ERR_ENOENT; -} - -uint32_t sb_posix_close(uint32_t fd) { - - if ((fd == 0U) || (fd == 1U) || (fd == 2U)) { - - return SB_ERR_NOERROR; - } - - return SB_ERR_EBADFD; -} - -uint32_t sb_posix_read(uint32_t fd, uint8_t *buf, size_t count) { - sb_class_t *sbcp = (sb_class_t *)chThdGetSelfX()->ctx.syscall.p; - - if (!sb_is_valid_write_range(sbcp, (void *)buf, count)) { - return SB_ERR_EFAULT; - } - - if (fd == 0U) { - SandboxStream *ssp = sbcp->config->stdin_stream; - - if ((count == 0U) || (ssp == NULL)) { - return 0U; - } - - return (uint32_t)ssp->vmt->read((void *)ssp, buf, count); - } - - return SB_ERR_EBADFD; -} - -uint32_t sb_posix_write(uint32_t fd, const uint8_t *buf, size_t count) { - sb_class_t *sbcp = (sb_class_t *)chThdGetSelfX()->ctx.syscall.p; - - if (!sb_is_valid_read_range(sbcp, (const void *)buf, count)) { - return SB_ERR_EFAULT; - } - - if (fd == 1U) { - SandboxStream *ssp = sbcp->config->stdout_stream; - - if ((count == 0U) || (ssp == NULL)) { - return 0U; - } - - return (uint32_t)ssp->vmt->write((void *)ssp, buf, count); - } - - if (fd == 2U) { - SandboxStream *ssp = sbcp->config->stderr_stream; - - if ((count == 0U) || (ssp == NULL)) { - return 0U; - } - - return (uint32_t)ssp->vmt->write((void *)ssp, buf, count); - } - - return SB_ERR_EBADFD; -} - -uint32_t sb_posix_lseek(uint32_t fd, uint32_t offset, uint32_t whence) { - - (void)offset; - (void)whence; - - if ((fd == 0U) || (fd == 1U) || (fd == 2U)) { - - return SB_ERR_ESPIPE; - } - - return SB_ERR_EBADFD; -} #endif /** @} */ diff --git a/os/sb/host/sbposix.h b/os/sb/host/sbposix.h index 744d4c0f5..8c7e92def 100644 --- a/os/sb/host/sbposix.h +++ b/os/sb/host/sbposix.h @@ -29,8 +29,8 @@ #define SBPOSIX_H #if (SB_CFG_ENABLE_VFS == TRUE) || defined(__DOXYGEN__) + #include "vfs.h" -#endif /*===========================================================================*/ /* Module constants. */ @@ -93,6 +93,8 @@ static inline bool sb_is_existing_descriptor(sb_ioblock_t *iop, int fd) { return (fd >= 0) && (fd < SB_CFG_FD_NUM) && (iop->vfs_nodes[fd] != NULL); } +#endif /* SB_CFG_ENABLE_VFS == TRUE */ + #endif /* SBPOSIX_H */ /** @} */