Skip to content

Commit

Permalink
Added LFS_CRC, easier override for lfs_crc
Browse files Browse the repository at this point in the history
Now you can override littlefs's CRC implementation with some simple
defines:

  -DLFS_CRC=lfs_crc

The motivation for this is the same for LFS_MALLOC/LFS_FREE. I think
these are the main "system-level" utils that users want to override.

Don't override with this something that's not CRC32! Your filesystem
will no longer be compatible with other tools! This is only intended for
provided hardware acceleration!
  • Loading branch information
geky committed Dec 19, 2023
1 parent a0c6c54 commit 9a620c7
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 0 deletions.
3 changes: 3 additions & 0 deletions lfs_util.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
#ifndef LFS_CONFIG


// If user provides their own CRC impl we don't need this
#ifndef LFS_CRC
// Software CRC implementation with small lookup table
uint32_t lfs_crc(uint32_t crc, const void *buffer, size_t size) {
static const uint32_t rtable[16] = {
Expand All @@ -29,6 +31,7 @@ uint32_t lfs_crc(uint32_t crc, const void *buffer, size_t size) {

return crc;
}
#endif


#endif
6 changes: 6 additions & 0 deletions lfs_util.h
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,13 @@ static inline uint32_t lfs_tobe32(uint32_t a) {
}

// Calculate CRC-32 with polynomial = 0x04c11db7
#ifdef LFS_CRC
uint32_t lfs_crc(uint32_t crc, const void *buffer, size_t size) {
return LFS_CRC(crc, buffer, size)
}
#else
uint32_t lfs_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
Expand Down

0 comments on commit 9a620c7

Please sign in to comment.