Zephyr API Documentation 4.0.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
littlefs.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2019 Bolt Innovation Management, LLC
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_INCLUDE_FS_LITTLEFS_H_
8#define ZEPHYR_INCLUDE_FS_LITTLEFS_H_
9
10#include <zephyr/types.h>
11#include <zephyr/kernel.h>
13
14#include <lfs.h>
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
26#define FS_LITTLEFS_DISK_VERSION_MAJOR_GET(disk_version) FIELD_GET(GENMASK(31, 16), disk_version)
27
34#define FS_LITTLEFS_DISK_VERSION_MINOR_GET(disk_version) FIELD_GET(GENMASK(15, 0), disk_version)
35
38 /* Defaulted in driver, customizable before mount. */
39 struct lfs_config cfg;
40
41 /* Must be cfg.cache_size */
43
44 /* Must be cfg.cache_size */
46
47 /* Must be cfg.lookahead_size/4 elements, and
48 * cfg.lookahead_size must be a multiple of 8.
49 */
50 uint32_t *lookahead_buffer[CONFIG_FS_LITTLEFS_LOOKAHEAD_SIZE / sizeof(uint32_t)];
51
52 /* These structures are filled automatically at mount. */
53 struct lfs lfs;
54 void *backend;
55 struct k_mutex mutex;
56};
57
86#define FS_LITTLEFS_DECLARE_CUSTOM_CONFIG(name, alignment, read_sz, prog_sz, cache_sz, \
87 lookahead_sz) \
88 static uint8_t __aligned(alignment) name ## _read_buffer[cache_sz]; \
89 static uint8_t __aligned(alignment) name ## _prog_buffer[cache_sz]; \
90 static uint32_t name ## _lookahead_buffer[(lookahead_sz) / sizeof(uint32_t)]; \
91 static struct fs_littlefs name = { \
92 .cfg = { \
93 .read_size = (read_sz), \
94 .prog_size = (prog_sz), \
95 .cache_size = (cache_sz), \
96 .lookahead_size = (lookahead_sz), \
97 .read_buffer = name ## _read_buffer, \
98 .prog_buffer = name ## _prog_buffer, \
99 .lookahead_buffer = name ## _lookahead_buffer, \
100 }, \
101 }
102
112#define FS_LITTLEFS_DECLARE_DEFAULT_CONFIG(name) \
113 FS_LITTLEFS_DECLARE_CUSTOM_CONFIG(name, \
114 4, \
115 CONFIG_FS_LITTLEFS_READ_SIZE, \
116 CONFIG_FS_LITTLEFS_PROG_SIZE, \
117 CONFIG_FS_LITTLEFS_CACHE_SIZE, \
118 CONFIG_FS_LITTLEFS_LOOKAHEAD_SIZE)
119
120#ifdef __cplusplus
121}
122#endif
123
124#endif /* ZEPHYR_INCLUDE_FS_LITTLEFS_H_ */
Public API for flash map.
Public kernel APIs.
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
Filesystem info structure for LittleFS mount.
Definition littlefs.h:37
void * backend
Definition littlefs.h:54
uint8_t * prog_buffer
Definition littlefs.h:45
struct k_mutex mutex
Definition littlefs.h:55
struct lfs lfs
Definition littlefs.h:53
uint32_t * lookahead_buffer[CONFIG_FS_LITTLEFS_LOOKAHEAD_SIZE/sizeof(uint32_t)]
Definition littlefs.h:50
struct lfs_config cfg
Definition littlefs.h:39
uint8_t * read_buffer
Definition littlefs.h:42
Mutex Structure.
Definition kernel.h:3004