1 /*
2  * Copyright (c) 2023 Antmicro <www.antmicro.com>
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef ZEPHYR_INCLUDE_FS_EXT2_H_
8 #define ZEPHYR_INCLUDE_FS_EXT2_H_
9 
10 #include <stdint.h>
11 
12 /** @brief Configuration used to format ext2 file system.
13  *
14  * If a field is set to 0 then default value is used.
15  * (In volume name the first cell of an array must be 0 to use default value.)
16  *
17  * @param block_size Requested size of block.
18  * @param fs_size Requested size of file system. If 0 then whole available memory is used.
19  * @param bytes_per_inode Requested memory for one inode. It is used to calculate number of inodes
20  *	in created file system.
21  * @param uuid UUID for created file system. Used when set_uuid is true.
22  * @param volume_name Name for created file system.
23  * @param set_uuid If true then UUID from that structure is used in created file system.
24  *	If false then UUID (ver4) is generated.
25  */
26 struct ext2_cfg {
27 	uint32_t block_size;
28 	uint32_t fs_size; /* Number of blocks that we want to take. */
29 	uint32_t bytes_per_inode;
30 	uint8_t uuid[16];
31 	uint8_t volume_name[17]; /* If first byte is 0 then name ext2" is given. */
32 	bool set_uuid;
33 };
34 
35 #define FS_EXT2_DECLARE_DEFAULT_CONFIG(name)			\
36 	static struct ext2_cfg name = {				\
37 		.block_size = 1024,				\
38 		.fs_size = 0x800000,				\
39 		.bytes_per_inode = 4096,			\
40 		.volume_name = {'e', 'x', 't', '2', '\0'},	\
41 		.set_uuid = false,				\
42 	}
43 
44 
45 #endif /* ZEPHYR_INCLUDE_FS_EXT2_H_ */
46