Line data Source code
1 0 : /*
2 : * Copyright (c) 2023 Embedded Solutions GmbH
3 : *
4 : * SPDX-License-Identifier: Apache-2.0
5 : */
6 :
7 : #ifndef ZEPHYR_INCLUDE_DRIVERS_LOOPBACK_DISK_ACCESS_H_
8 : #define ZEPHYR_INCLUDE_DRIVERS_LOOPBACK_DISK_ACCESS_H_
9 :
10 : #include <zephyr/drivers/disk.h>
11 : #include <zephyr/fs/fs_interface.h>
12 :
13 : /**
14 : * @brief Context object for an active loopback disk device
15 : */
16 1 : struct loopback_disk_access {
17 0 : struct disk_info info;
18 0 : const char *file_path;
19 0 : struct fs_file_t file;
20 0 : size_t num_sectors;
21 : };
22 :
23 : /**
24 : * @brief Register a loopback disk device
25 : *
26 : * Registers a new loopback disk deviced backed by a file at the specified path.
27 : *
28 : * @details
29 : * @p All parameters (ctx, file_path and disk_access_name) must point to data that will remain valid
30 : * until the disk access is unregistered. This is trivially true for file_path and disk_access_name
31 : * if they are string literals, but care must be taken for ctx, as well as for file_path and
32 : * disk_access_name if they are constructed dynamically.
33 : *
34 : * @param ctx Preallocated context structure
35 : * @param file_path Path to backing file
36 : * @param disk_access_name Name of the created disk access (for disk_access_*() functions)
37 : *
38 : * @retval 0 on success;
39 : * @retval <0 negative errno code, depending on file system of the backing file.
40 : */
41 1 : int loopback_disk_access_register(struct loopback_disk_access *ctx, const char *file_path,
42 : const char *disk_access_name);
43 :
44 : /**
45 : * @brief Unregister a previously registered loopback disk device
46 : *
47 : * Cleans up resources used by the disk access.
48 : *
49 : * @param ctx Context structure previously passed to a successful invocation of
50 : * loopback_disk_access_register()
51 : *
52 : * @retval 0 on success;
53 : * @retval <0 negative errno code, depending on file system of the backing file.
54 : */
55 1 : int loopback_disk_access_unregister(struct loopback_disk_access *ctx);
56 :
57 : #endif /* ZEPHYR_INCLUDE_DRIVERS_LOOPBACK_DISK_ACCESS_H_ */
|