/* * Copyright (c) 2023 Embedded Solutions GmbH * * SPDX-License-Identifier: Apache-2.0 */ #ifndef ZEPHYR_INCLUDE_DRIVERS_LOOPBACK_DISK_ACCESS_H_ #define ZEPHYR_INCLUDE_DRIVERS_LOOPBACK_DISK_ACCESS_H_ #include #include /** * @brief Context object for an active loopback disk device */ struct loopback_disk_access { struct disk_info info; const char *file_path; struct fs_file_t file; size_t num_sectors; }; /** * @brief Register a loopback disk device * * Registers a new loopback disk deviced backed by a file at the specified path. * * @details * @p All parameters (ctx, file_path and disk_access_name) must point to data that will remain valid * until the disk access is unregistered. This is trivially true for file_path and disk_access_name * if they are string literals, but care must be taken for ctx, as well as for file_path and * disk_access_name if they are constructed dynamically. * * @param ctx Preallocated context structure * @param file_path Path to backing file * @param disk_access_name Name of the created disk access (for disk_access_*() functions) * * @retval 0 on success; * @retval <0 negative errno code, depending on file system of the backing file. */ int loopback_disk_access_register(struct loopback_disk_access *ctx, const char *file_path, const char *disk_access_name); /** * @brief Unregister a previously registered loopback disk device * * Cleans up resources used by the disk access. * * @param ctx Context structure previously passed to a successful invocation of * loopback_disk_access_register() * * @retval 0 on success; * @retval <0 negative errno code, depending on file system of the backing file. */ int loopback_disk_access_unregister(struct loopback_disk_access *ctx); #endif /* ZEPHYR_INCLUDE_DRIVERS_LOOPBACK_DISK_ACCESS_H_ */