X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;ds=sidebyside;f=fs%2Fbattfs.h;h=da38bdecf050609932944cfd103faf3840c2ac1b;hb=cc3c06f6d51e266b71d497e53cf1075b63d1e235;hp=3d491cd9bad8b31d45872159d90bd74049dd9ad5;hpb=6c20782f7b6088ff241e4f486a3afe73de46b32a;p=bertos.git diff --git a/fs/battfs.h b/fs/battfs.h index 3d491cd9..da38bdec 100644 --- a/fs/battfs.h +++ b/fs/battfs.h @@ -42,19 +42,14 @@ #define FS_BATTFS_H #include // uintXX_t; STATIC_ASSERT -#include +#include // CPU_BITS_PER_CHAR typedef uint16_t fill_t; typedef uint16_t pgoff_t; typedef pgoff_t mark_t; typedef uint8_t inode_t; typedef uint8_t seq_t; -typedef uint8_t fsc_t; - -/** - * Reserve 2 bits from fill field to allocate seq number. - */ -#define FILLSIZE ((sizeof(filled_t) * CPU_BITS_PER_CHAR) - 2) +typedef uint16_t fsc_t; /** * BattFS page header. @@ -63,16 +58,17 @@ typedef uint8_t fsc_t; */ typedef struct BattFsPageHeader { - mark_t mark; ///< Marker used to keep trace of free/used pages. - pgoff_t pgoff; ///< Page offset inside file. - fill_t fill:FILLSIZE; ///< Filled bytes in page. - seq_t seq:2; ///< bit[1:0]: Page sequence number; bit[7:2] unused for now, must be set to 1. - inode_t inode; ///< File inode (file identifier). - fsc_t fsc; ///< FSC of the page header. + mark_t mark; ///< Marker used to keep trace of free/used pages. + pgoff_t pgoff; ///< Page offset inside file. + fill_t fill; ///< Filled bytes in page. + seq_t seq; ///< Page sequence number. + inode_t inode; ///< File inode (file identifier). + uint16_t rfu; ///< Reserved for future use, 0xFFFF for now. + fsc_t fsc; ///< FSC of the page header. } BattFsPageHeader; /* Ensure structure has no padding added */ -STATIC_ASSERT(sizeof(BattFsPageHeader) == 8); +STATIC_ASSERT(sizeof(BattFsPageHeader) == 12); /* Fwd decl */ struct BattFsSuper; @@ -109,7 +105,7 @@ typedef size_t (*disk_page_write_t) (struct BattFsSuper *d, const void *buf, bat */ typedef bool (*disk_page_erase_t) (struct BattFsSuper *d, battfs_page_t page); -typedef uint32_t disk_size_t ///< Type for disk sizes. +typedef uint32_t disk_size_t; ///< Type for disk sizes. /** * Context used to describe a disk.