littlefs2_fs.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2017 OTA keys S.A.
3  * Copyright (C) 2020 Inria
4  *
5  * This file is subject to the terms and conditions of the GNU Lesser
6  * General Public License v2.1. See the file LICENSE in the top level
7  * directory for more details.
8  */
9 
10 #pragma once
11 
26 #include <stdalign.h>
27 
28 #include "vfs.h"
29 #include "lfs.h"
30 #include "mtd.h"
31 #include "mutex.h"
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
42 #ifndef CONFIG_LITTLEFS2_LOOKAHEAD_SIZE
44 #define CONFIG_LITTLEFS2_LOOKAHEAD_SIZE (16)
45 #endif
46 
47 #ifndef CONFIG_LITTLEFS2_FILE_BUFFER_SIZE
51 #define CONFIG_LITTLEFS2_FILE_BUFFER_SIZE (0)
52 #endif
53 
54 #ifndef CONFIG_LITTLEFS2_READ_BUFFER_SIZE
58 #define CONFIG_LITTLEFS2_READ_BUFFER_SIZE (0)
59 #endif
60 
61 #ifndef CONFIG_LITTLEFS2_PROG_BUFFER_SIZE
64 #define CONFIG_LITTLEFS2_PROG_BUFFER_SIZE (0)
65 #endif
66 
67 #ifndef CONFIG_LITTLEFS2_CACHE_PAGES
70 #define CONFIG_LITTLEFS2_CACHE_PAGES (1)
71 #endif
72 
73 #ifndef CONFIG_LITTLEFS2_BLOCK_CYCLES
76 #define CONFIG_LITTLEFS2_BLOCK_CYCLES (512)
77 #endif
78 
79 #ifndef CONFIG_LITTLEFS2_MIN_BLOCK_SIZE_EXP
83 #define CONFIG_LITTLEFS2_MIN_BLOCK_SIZE_EXP (-1)
84 #endif
90 typedef struct {
91  lfs_t fs;
92  struct lfs_config config;
98  uint32_t base_addr;
99 #if CONFIG_LITTLEFS2_FILE_BUFFER_SIZE || DOXYGEN
102  alignas(uint32_t) uint8_t file_buf[CONFIG_LITTLEFS2_FILE_BUFFER_SIZE];
103 #endif
104 #if CONFIG_LITTLEFS2_READ_BUFFER_SIZE || DOXYGEN
107  alignas(uint32_t) uint8_t read_buf[CONFIG_LITTLEFS2_READ_BUFFER_SIZE];
108 #endif
109 #if CONFIG_LITTLEFS2_PROG_BUFFER_SIZE || DOXYGEN
112  alignas(uint32_t) uint8_t prog_buf[CONFIG_LITTLEFS2_PROG_BUFFER_SIZE];
113 #endif
115  alignas(uint32_t) uint8_t lookahead_buf[CONFIG_LITTLEFS2_LOOKAHEAD_SIZE];
116  uint16_t sectors_per_block;
118 
121 
122 #ifdef __cplusplus
123 }
124 #endif
125 
#define CONFIG_LITTLEFS2_READ_BUFFER_SIZE
Read buffer size, if 0, dynamic allocation is used.
Definition: littlefs2_fs.h:58
#define CONFIG_LITTLEFS2_PROG_BUFFER_SIZE
Prog buffer size, if 0, dynamic allocation is used.
Definition: littlefs2_fs.h:64
#define CONFIG_LITTLEFS2_LOOKAHEAD_SIZE
Default lookahead size.
Definition: littlefs2_fs.h:44
#define CONFIG_LITTLEFS2_FILE_BUFFER_SIZE
File buffer size, if 0, dynamic allocation is used.
Definition: littlefs2_fs.h:51
const vfs_file_system_t littlefs2_file_system
The littlefs vfs driver.
Mutex for thread synchronization.
littlefs descriptor for vfs integration
Definition: littlefs2_fs.h:90
mtd_dev_t * dev
mtd device to use
Definition: littlefs2_fs.h:93
uint16_t sectors_per_block
number of sectors per block
Definition: littlefs2_fs.h:116
uint32_t base_addr
first block number to use, total number of block is defined in config.
Definition: littlefs2_fs.h:98
mutex_t lock
mutex
Definition: littlefs2_fs.h:94
MTD device descriptor.
Definition: mtd.h:111
Mutex structure.
Definition: mutex.h:39
A file system driver.
Definition: vfs.h:374