Files
thirdparty-littlefs/lfs_config.h
Christopher Haster 106b06a457 Added better handling for metadata pairs
The core algorithim that backs this filesystem's goal of fault
tolerance is the alternating of "metadata pairs". Backed by a
simple core function for reading and writing, makes heavy use
of c99 designated initializers for passing info about multiple
chunks in an erase block.
2017-03-19 22:25:36 -05:00

62 lines
1.3 KiB
C

/*
* Configuration and type definitions
*
* Copyright (c) 2017 Christopher Haster
* Distributed under the MIT license
*/
#ifndef LFS_CONFIG_H
#define LFS_CONFIG_H
#include <stdint.h>
// Type definitions
typedef uint64_t lfs_lword_t;
typedef uint32_t lfs_word_t;
typedef uint16_t lfs_hword_t;
typedef lfs_word_t lfs_size_t;
typedef lfs_word_t lfs_off_t;
typedef int lfs_error_t;
typedef lfs_lword_t lfs_lsize_t;
typedef lfs_word_t lfs_ino_t;
typedef lfs_hword_t lfs_ioff_t;
// Maximum length of file name
#define LFS_NAME_MAX 255
// Builtin functions
static inline lfs_word_t lfs_max(lfs_word_t a, lfs_word_t b) {
return (a > b) ? a : b;
}
static inline lfs_word_t lfs_min(lfs_word_t a, lfs_word_t b) {
return (a < b) ? a : b;
}
static inline lfs_word_t lfs_ctz(lfs_word_t a) {
return __builtin_ctz(a);
}
static inline lfs_word_t lfs_npw2(lfs_word_t a) {
return 32 - __builtin_clz(a-1);
}
static inline void lfs_swap(lfs_word_t *a, lfs_word_t *b) {
lfs_word_t temp = *a;
*a = *b;
*b = temp;
}
// Attributes
#define lfs_disk_struct struct __attribute__((packed))
// Logging operations
#include <stdio.h>
#define LFS_ERROR(fmt, ...) printf("Error: " fmt "\n", __VA_ARGS__)
#define LFS_WARN(fmt, ...) printf("Warn: " fmt "\n", __VA_ARGS__)
#define LFS_INFO(fmt, ...) printf("Info: " fmt "\n", __VA_ARGS__)
#endif