Browse Source

Revisited some generic concepts, callbacks, and some reorganization

- Callbacks for get/match, this does have a code cost, but allows more
  code reuse, which almost balances out the code cost, but also reduces
  maintenance and increased flexibility. Also callbacks may be able to
  be gc-ed in some cases.
- Consistent struct vs _t usage, _t for external-facing struct that
  shouldn't be messed with outside the library. structs for external and
  internal structs where anyone with access is allowed to modify.
- Reorganized several high-level function groups
- Inlined structures that didn't need separate definitions in header
Christopher Haster 8 năm trước cách đây
mục cha
commit
5eeeb9d6ac
2 tập tin đã thay đổi với 608 bổ sung và 339 xóa
  1. 590 313
      lfs.c
  2. 18 26
      lfs.h

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 590 - 313
lfs.c


+ 18 - 26
lfs.h

@@ -113,7 +113,7 @@ enum lfs_type {
     LFS_FROM_REGION         = 0x000,
     LFS_FROM_DISK           = 0x200,
     LFS_FROM_MOVE           = 0x0c1,
-    LFS_FROM_ATTRS          = 0x0c2,
+    LFS_FROM_USERATTRS      = 0x0c2,
     LFS_FROM_SUPERBLOCK     = 0x0c3,
 };
 
@@ -284,13 +284,7 @@ struct lfs_file_config {
 };
 
 
-/// littlefs data structures ///
-typedef struct lfs_mattr {
-    int32_t tag;
-    const void *buffer;
-    const struct lfs_mattr *next;
-} lfs_mattr_t;
-
+/// internal littlefs data structures ///
 typedef struct lfs_cache {
     lfs_block_t block;
     lfs_off_t off;
@@ -324,13 +318,7 @@ typedef struct lfs_mdir {
     lfs_global_t locals;
 } lfs_mdir_t;
 
-typedef struct lfs_mlist {
-    struct lfs_mlist *next;
-    uint16_t id;
-    uint8_t type;
-    lfs_mdir_t m;
-} lfs_mlist_t;
-
+// littlefs directory type
 typedef struct lfs_dir {
     struct lfs_dir *next;
     uint16_t id;
@@ -341,6 +329,7 @@ typedef struct lfs_dir {
     lfs_block_t head[2];
 } lfs_dir_t;
 
+// littlefs file type
 typedef struct lfs_file {
     struct lfs_file *next;
     uint16_t id;
@@ -373,26 +362,29 @@ typedef struct lfs_superblock {
     lfs_size_t inline_max;
 } lfs_superblock_t;
 
-typedef struct lfs_free {
-    lfs_block_t off;
-    lfs_block_t size;
-    lfs_block_t i;
-    lfs_block_t ack;
-    uint32_t *buffer;
-} lfs_free_t;
-
-// The littlefs type
+// The littlefs filesystem type
 typedef struct lfs {
     lfs_cache_t rcache;
     lfs_cache_t pcache;
 
     lfs_block_t root[2];
-    lfs_mlist_t *mlist;
+    struct lfs_mlist {
+        struct lfs_mlist *next;
+        uint16_t id;
+        uint8_t type;
+        lfs_mdir_t m;
+    } *mlist;
     uint32_t seed;
 
     lfs_global_t globals;
     lfs_global_t locals;
-    lfs_free_t free;
+    struct lfs_free {
+        lfs_block_t off;
+        lfs_block_t size;
+        lfs_block_t i;
+        lfs_block_t ack;
+        uint32_t *buffer;
+    } free;
 
     const struct lfs_config *cfg;
     lfs_size_t block_size;

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác