summaryrefslogtreecommitdiffstatshomepage
path: root/lib/littlefs/lfs2_util.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/littlefs/lfs2_util.h')
-rw-r--r--lib/littlefs/lfs2_util.h40
1 files changed, 35 insertions, 5 deletions
diff --git a/lib/littlefs/lfs2_util.h b/lib/littlefs/lfs2_util.h
index dd2cbcc106..48d9f4c572 100644
--- a/lib/littlefs/lfs2_util.h
+++ b/lib/littlefs/lfs2_util.h
@@ -8,6 +8,9 @@
#ifndef LFS2_UTIL_H
#define LFS2_UTIL_H
+#define LFS2_STRINGIZE(x) LFS2_STRINGIZE2(x)
+#define LFS2_STRINGIZE2(x) #x
+
// Users can override lfs2_util.h with their own configuration by defining
// LFS2_CONFIG as a header file to include (-DLFS2_CONFIG=lfs2_config.h).
//
@@ -15,11 +18,26 @@
// provided by the config file. To start, I would suggest copying lfs2_util.h
// and modifying as needed.
#ifdef LFS2_CONFIG
-#define LFS2_STRINGIZE(x) LFS2_STRINGIZE2(x)
-#define LFS2_STRINGIZE2(x) #x
#include LFS2_STRINGIZE(LFS2_CONFIG)
#else
+// Alternatively, users can provide a header file which defines
+// macros and other things consumed by littlefs.
+//
+// For example, provide my_defines.h, which contains
+// something like:
+//
+// #include <stddef.h>
+// extern void *my_malloc(size_t sz);
+// #define LFS2_MALLOC(sz) my_malloc(sz)
+//
+// And build littlefs with the header by defining LFS2_DEFINES.
+// (-DLFS2_DEFINES=my_defines.h)
+
+#ifdef LFS2_DEFINES
+#include LFS2_STRINGIZE(LFS2_DEFINES)
+#endif
+
// System includes
#include <stdint.h>
#include <stdbool.h>
@@ -212,12 +230,22 @@ static inline uint32_t lfs2_tobe32(uint32_t a) {
}
// Calculate CRC-32 with polynomial = 0x04c11db7
+#ifdef LFS2_CRC
+uint32_t lfs2_crc(uint32_t crc, const void *buffer, size_t size) {
+ return LFS2_CRC(crc, buffer, size)
+}
+#else
uint32_t lfs2_crc(uint32_t crc, const void *buffer, size_t size);
+#endif
// Allocate memory, only used if buffers are not provided to littlefs
-// Note, memory must be 64-bit aligned
+//
+// littlefs current has no alignment requirements, as it only allocates
+// byte-level buffers.
static inline void *lfs2_malloc(size_t size) {
-#ifndef LFS2_NO_MALLOC
+#if defined(LFS2_MALLOC)
+ return LFS2_MALLOC(size);
+#elif !defined(LFS2_NO_MALLOC)
return malloc(size);
#else
(void)size;
@@ -227,7 +255,9 @@ static inline void *lfs2_malloc(size_t size) {
// Deallocate memory, only used if buffers are not provided to littlefs
static inline void lfs2_free(void *p) {
-#ifndef LFS2_NO_MALLOC
+#if defined(LFS2_FREE)
+ LFS2_FREE(p);
+#elif !defined(LFS2_NO_MALLOC)
free(p);
#else
(void)p;