|
@@ -21,7 +21,7 @@ extern "C"
|
|
|
// Software library version
|
|
// Software library version
|
|
|
// Major (top-nibble), incremented on backwards incompatible changes
|
|
// Major (top-nibble), incremented on backwards incompatible changes
|
|
|
// Minor (bottom-nibble), incremented on feature additions
|
|
// Minor (bottom-nibble), incremented on feature additions
|
|
|
-#define LFS_VERSION 0x00010004
|
|
|
|
|
|
|
+#define LFS_VERSION 0x00010005
|
|
|
#define LFS_VERSION_MAJOR (0xffff & (LFS_VERSION >> 16))
|
|
#define LFS_VERSION_MAJOR (0xffff & (LFS_VERSION >> 16))
|
|
|
#define LFS_VERSION_MINOR (0xffff & (LFS_VERSION >> 0))
|
|
#define LFS_VERSION_MINOR (0xffff & (LFS_VERSION >> 0))
|
|
|
|
|
|
|
@@ -167,6 +167,12 @@ struct lfs_config {
|
|
|
void *file_buffer;
|
|
void *file_buffer;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+// Optional configuration provided during lfs_file_opencfg
|
|
|
|
|
+struct lfs_file_config {
|
|
|
|
|
+ // Optional, statically allocated buffer for files. Must be program sized.
|
|
|
|
|
+ // If NULL, malloc will be used by default.
|
|
|
|
|
+ void *buffer;
|
|
|
|
|
+};
|
|
|
|
|
|
|
|
// File info structure
|
|
// File info structure
|
|
|
struct lfs_info {
|
|
struct lfs_info {
|
|
@@ -214,6 +220,7 @@ typedef struct lfs_file {
|
|
|
lfs_block_t head;
|
|
lfs_block_t head;
|
|
|
lfs_size_t size;
|
|
lfs_size_t size;
|
|
|
|
|
|
|
|
|
|
+ const struct lfs_file_config *cfg;
|
|
|
uint32_t flags;
|
|
uint32_t flags;
|
|
|
lfs_off_t pos;
|
|
lfs_off_t pos;
|
|
|
lfs_block_t block;
|
|
lfs_block_t block;
|
|
@@ -281,7 +288,8 @@ typedef struct lfs {
|
|
|
// Format a block device with the littlefs
|
|
// Format a block device with the littlefs
|
|
|
//
|
|
//
|
|
|
// Requires a littlefs object and config struct. This clobbers the littlefs
|
|
// Requires a littlefs object and config struct. This clobbers the littlefs
|
|
|
-// object, and does not leave the filesystem mounted.
|
|
|
|
|
|
|
+// object, and does not leave the filesystem mounted. The config struct must
|
|
|
|
|
+// be zeroed for defaults and backwards compatibility.
|
|
|
//
|
|
//
|
|
|
// Returns a negative error code on failure.
|
|
// Returns a negative error code on failure.
|
|
|
int lfs_format(lfs_t *lfs, const struct lfs_config *config);
|
|
int lfs_format(lfs_t *lfs, const struct lfs_config *config);
|
|
@@ -290,7 +298,8 @@ int lfs_format(lfs_t *lfs, const struct lfs_config *config);
|
|
|
//
|
|
//
|
|
|
// Requires a littlefs object and config struct. Multiple filesystems
|
|
// Requires a littlefs object and config struct. Multiple filesystems
|
|
|
// may be mounted simultaneously with multiple littlefs objects. Both
|
|
// may be mounted simultaneously with multiple littlefs objects. Both
|
|
|
-// lfs and config must be allocated while mounted.
|
|
|
|
|
|
|
+// lfs and config must be allocated while mounted. The config struct must
|
|
|
|
|
+// be zeroed for defaults and backwards compatibility.
|
|
|
//
|
|
//
|
|
|
// Returns a negative error code on failure.
|
|
// Returns a negative error code on failure.
|
|
|
int lfs_mount(lfs_t *lfs, const struct lfs_config *config);
|
|
int lfs_mount(lfs_t *lfs, const struct lfs_config *config);
|
|
@@ -328,14 +337,27 @@ int lfs_stat(lfs_t *lfs, const char *path, struct lfs_info *info);
|
|
|
|
|
|
|
|
// Open a file
|
|
// Open a file
|
|
|
//
|
|
//
|
|
|
-// The mode that the file is opened in is determined
|
|
|
|
|
-// by the flags, which are values from the enum lfs_open_flags
|
|
|
|
|
-// that are bitwise-ored together.
|
|
|
|
|
|
|
+// The mode that the file is opened in is determined by the flags, which
|
|
|
|
|
+// are values from the enum lfs_open_flags that are bitwise-ored together.
|
|
|
//
|
|
//
|
|
|
// Returns a negative error code on failure.
|
|
// Returns a negative error code on failure.
|
|
|
int lfs_file_open(lfs_t *lfs, lfs_file_t *file,
|
|
int lfs_file_open(lfs_t *lfs, lfs_file_t *file,
|
|
|
const char *path, int flags);
|
|
const char *path, int flags);
|
|
|
|
|
|
|
|
|
|
+// Open a file with extra configuration
|
|
|
|
|
+//
|
|
|
|
|
+// The mode that the file is opened in is determined by the flags, which
|
|
|
|
|
+// are values from the enum lfs_open_flags that are bitwise-ored together.
|
|
|
|
|
+//
|
|
|
|
|
+// The config struct provides additional config options per file as described
|
|
|
|
|
+// above. The config struct must be allocated while the file is open, and the
|
|
|
|
|
+// config struct must be zeroed for defaults and backwards compatibility.
|
|
|
|
|
+//
|
|
|
|
|
+// Returns a negative error code on failure.
|
|
|
|
|
+int lfs_file_opencfg(lfs_t *lfs, lfs_file_t *file,
|
|
|
|
|
+ const char *path, int flags,
|
|
|
|
|
+ const struct lfs_file_config *config);
|
|
|
|
|
+
|
|
|
// Close a file
|
|
// Close a file
|
|
|
//
|
|
//
|
|
|
// Any pending writes are written out to storage as though
|
|
// Any pending writes are written out to storage as though
|