Zephyr Project API 4.4.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
12
13#ifndef ZEPHYR_INCLUDE_FS_LITTLEFS_H_
14#define ZEPHYR_INCLUDE_FS_LITTLEFS_H_
15
16#include <zephyr/types.h>
17#include <zephyr/kernel.h>
19
20#include <lfs.h>
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
32#define FS_LITTLEFS_DISK_VERSION_MAJOR_GET(disk_version) FIELD_GET(GENMASK(31, 16), disk_version)
33
40#define FS_LITTLEFS_DISK_VERSION_MINOR_GET(disk_version) FIELD_GET(GENMASK(15, 0), disk_version)
41
45 struct lfs_config cfg;
46
49
52
56 uint32_t *lookahead_buffer[CONFIG_FS_LITTLEFS_LOOKAHEAD_SIZE / sizeof(uint32_t)];
57
59 struct lfs lfs;
61 void *backend;
63 struct k_mutex mutex;
64};
65
94#define FS_LITTLEFS_DECLARE_CUSTOM_CONFIG(name, alignment, read_sz, prog_sz, cache_sz, \
95 lookahead_sz) \
96 static uint8_t __aligned(alignment) name ## _read_buffer[cache_sz]; \
97 static uint8_t __aligned(alignment) name ## _prog_buffer[cache_sz]; \
98 static uint32_t name ## _lookahead_buffer[(lookahead_sz) / sizeof(uint32_t)]; \
99 static struct fs_littlefs name = { \
100 .cfg = { \
101 .read_size = (read_sz), \
102 .prog_size = (prog_sz), \
103 .cache_size = (cache_sz), \
104 .lookahead_size = (lookahead_sz), \
105 .read_buffer = name ## _read_buffer, \
106 .prog_buffer = name ## _prog_buffer, \
107 .lookahead_buffer = name ## _lookahead_buffer, \
108 }, \
109 }
110
120#define FS_LITTLEFS_DECLARE_DEFAULT_CONFIG(name) \
121 FS_LITTLEFS_DECLARE_CUSTOM_CONFIG(name, \
122 4, \
123 CONFIG_FS_LITTLEFS_READ_SIZE, \
124 CONFIG_FS_LITTLEFS_PROG_SIZE, \
125 CONFIG_FS_LITTLEFS_CACHE_SIZE, \
126 CONFIG_FS_LITTLEFS_LOOKAHEAD_SIZE)
127
128#ifdef __cplusplus
129}
130#endif
131
132#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:43
void * backend
Storage backend, filled automatically at mount.
Definition littlefs.h:61
uint8_t * prog_buffer
Program cache buffer, must be cfg.cache_size.
Definition littlefs.h:51
struct k_mutex mutex
Mutex protecting the instance, filled automatically at mount.
Definition littlefs.h:63
struct lfs lfs
littlefs state, filled automatically at mount.
Definition littlefs.h:59
uint32_t * lookahead_buffer[CONFIG_FS_LITTLEFS_LOOKAHEAD_SIZE/sizeof(uint32_t)]
Lookahead buffer, must be cfg.lookahead_size/4 elements, and cfg.lookahead_size must be a multiple of...
Definition littlefs.h:56
struct lfs_config cfg
littlefs configuration, defaulted in driver, customizable before mount.
Definition littlefs.h:45
uint8_t * read_buffer
Read cache buffer, must be cfg.cache_size.
Definition littlefs.h:48
Kernel mutex structure.
Definition kernel.h:3572