Loading...
Searching...
No Matches
littlefs_fs.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2017 OTA keys S.A.
3 *
4 * This file is subject to the terms and conditions of the GNU Lesser
5 * General Public License v2.1. See the file LICENSE in the top level
6 * directory for more details.
7 */
8
9#pragma once
10
23
24#include <stdalign.h>
25
26#include "vfs.h"
27#include "lfs.h"
28#include "mtd.h"
29#include "mutex.h"
30
31#ifdef __cplusplus
32extern "C" {
33#endif
34
39#ifndef LITTLEFS_LOOKAHEAD_SIZE
41#define LITTLEFS_LOOKAHEAD_SIZE (128)
42#endif
43
44#ifndef LITTLEFS_FILE_BUFFER_SIZE
48#define LITTLEFS_FILE_BUFFER_SIZE (0)
49#endif
50
51#ifndef LITTLEFS_READ_BUFFER_SIZE
54#define LITTLEFS_READ_BUFFER_SIZE (0)
55#endif
56
57#ifndef LITTLEFS_PROG_BUFFER_SIZE
60#define LITTLEFS_PROG_BUFFER_SIZE (0)
61#endif
62
63#ifndef LITTLEFS_MIN_BLOCK_SIZE_EXP
67#define LITTLEFS_MIN_BLOCK_SIZE_EXP (-1)
68#endif
70
74typedef struct {
75 lfs_t fs;
76 struct lfs_config config;
82 uint32_t base_addr;
83#if LITTLEFS_FILE_BUFFER_SIZE || DOXYGEN
85 alignas(uint32_t) uint8_t file_buf[LITTLEFS_FILE_BUFFER_SIZE];
86#endif
87#if LITTLEFS_READ_BUFFER_SIZE || DOXYGEN
89 alignas(uint32_t) uint8_t read_buf[LITTLEFS_READ_BUFFER_SIZE];
90#endif
91#if LITTLEFS_PROG_BUFFER_SIZE || DOXYGEN
93 alignas(uint32_t) uint8_t prog_buf[LITTLEFS_PROG_BUFFER_SIZE];
94#endif
96 alignas(uint32_t) uint8_t lookahead_buf[LITTLEFS_LOOKAHEAD_SIZE / 8];
99
102
103#ifdef __cplusplus
104}
105#endif
106
#define LITTLEFS_LOOKAHEAD_SIZE
Default lookahead size.
Definition littlefs_fs.h:41
#define LITTLEFS_FILE_BUFFER_SIZE
File buffer size, if 0, dynamic allocation is used.
Definition littlefs_fs.h:48
const vfs_file_system_t littlefs_file_system
The littlefs vfs driver.
#define LITTLEFS_READ_BUFFER_SIZE
Read buffer size, if 0, dynamic allocation is used.
Definition littlefs_fs.h:54
#define LITTLEFS_PROG_BUFFER_SIZE
Prog buffer size, if 0, dynamic allocation is used.
Definition littlefs_fs.h:60
Mutex for thread synchronization.
littlefs descriptor for vfs integration
Definition littlefs_fs.h:74
lfs_t fs
littlefs descriptor
Definition littlefs_fs.h:75
uint8_t prog_buf[LITTLEFS_PROG_BUFFER_SIZE]
prog buffer to use internally if LITTLEFS_PROG_BUFFER_SIZE is set
Definition littlefs_fs.h:93
uint16_t sectors_per_block
number of sectors per block
Definition littlefs_fs.h:97
struct lfs_config config
littlefs config
Definition littlefs_fs.h:76
mtd_dev_t * dev
mtd device to use
Definition littlefs_fs.h:77
uint8_t file_buf[LITTLEFS_FILE_BUFFER_SIZE]
file buffer to use internally if LITTLEFS_FILE_BUFFER_SIZE is set
Definition littlefs_fs.h:85
uint8_t lookahead_buf[LITTLEFS_LOOKAHEAD_SIZE/8]
lookahead buffer to use internally
Definition littlefs_fs.h:96
mutex_t lock
mutex
Definition littlefs_fs.h:78
uint32_t base_addr
first block number to use, total number of block is defined in config.
Definition littlefs_fs.h:82
uint8_t read_buf[LITTLEFS_READ_BUFFER_SIZE]
read buffer to use internally if LITTLEFS_READ_BUFFER_SIZE is set
Definition littlefs_fs.h:89
MTD device descriptor.
Definition mtd.h:111
Mutex structure.
Definition mutex.h:39
A file system driver.
Definition vfs.h:374