X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=fs%2Fbattfs.h;h=455b21ce0c20c1a6e4bd521a5281936e6a714048;hb=2a6ce4b2d8edc2fc858f4ca145cdfa10f6ab22e5;hp=1048b66c99f15a86b652b90bab4663407a540e90;hpb=4de4b5e781709be8e01087e0cd434cc3f3dae7ab;p=bertos.git diff --git a/fs/battfs.h b/fs/battfs.h index 1048b66c..455b21ce 100644 --- a/fs/battfs.h +++ b/fs/battfs.h @@ -43,6 +43,7 @@ #include // uintXX_t; STATIC_ASSERT #include // CPU_BITS_PER_CHAR +#include typedef uint16_t fill_t; typedef fill_t pgaddr_t; @@ -50,7 +51,7 @@ typedef uint16_t pgoff_t; typedef pgoff_t mark_t; typedef uint8_t inode_t; typedef uint8_t seq_t; -typedef uint16_t fcs_t; +typedef rotating_t fcs_t; /** * BattFS page header. @@ -65,9 +66,21 @@ typedef struct BattFsPageHeader pgoff_t pgoff; ///< Page offset inside file. fill_t fill; ///< Filled bytes in page. uint16_t rfu; ///< Reserved for future use, 0xFFFF for now. - fcs_t fcs; ///< FCS (Frame Check Sequence) of the page header. + + /** + * FCS (Frame Check Sequence) of the page header. + * \note This field must be the last one! + * This is needed because if the page is only partially + * written, we can use this to detect it. + */ + fcs_t fcs; } BattFsPageHeader; +/** + * Max number of files. + */ +#define BATTFS_MAX_FILES (1 << (CPU_BITS_PER_CHAR * sizeof(inode_t))) + /* Ensure structure has no padding added */ STATIC_ASSERT(sizeof(BattFsPageHeader) == 12); @@ -148,11 +161,6 @@ typedef struct BattFsSuper /* TODO add other fields. */ } BattFsSuper; -/** - * Initialize and mount disk described by - * \a d. - * \return false on errors, true otherwise. - */ bool battfs_init(struct BattFsSuper *d); #endif /* FS_BATTFS_H */