X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=fs%2Fbattfs.h;h=d3088847a4a3b3b26c7bcdbae6beee67e0632e1f;hb=HEAD;hp=1048b66c99f15a86b652b90bab4663407a540e90;hpb=4de4b5e781709be8e01087e0cd434cc3f3dae7ab;p=bertos.git diff --git a/fs/battfs.h b/fs/battfs.h deleted file mode 100644 index 1048b66c..00000000 --- a/fs/battfs.h +++ /dev/null @@ -1,158 +0,0 @@ -/** - * \file - * - * - * \version $Id:$ - * - * \author Francesco Sacchi - * - * \brief BattFS: a filesystem for embedded platforms (interface). - * TODO: Add detailed filesystem description. - */ - -#ifndef FS_BATTFS_H -#define FS_BATTFS_H - -#include // uintXX_t; STATIC_ASSERT -#include // CPU_BITS_PER_CHAR - -typedef uint16_t fill_t; -typedef fill_t pgaddr_t; -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; - -/** - * BattFS page header. - * \note fields order is chosen to comply - * with CPU alignment. - */ -typedef struct BattFsPageHeader -{ - inode_t inode; ///< File inode (file identifier). - seq_t seq; ///< Page sequence number. - 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. - uint16_t rfu; ///< Reserved for future use, 0xFFFF for now. - fcs_t fcs; ///< FCS (Frame Check Sequence) of the page header. -} BattFsPageHeader; - -/* Ensure structure has no padding added */ -STATIC_ASSERT(sizeof(BattFsPageHeader) == 12); - -/* Fwd decl */ -struct BattFsSuper; - -/** - * Type for disk page addressing. - */ -typedef uint16_t pgcnt_t; - -/** - * Type interface for disk init function. - * \return true if all is ok, false otherwise. - */ -typedef bool (*disk_open_t) (struct BattFsSuper *d); - -/** - * Type interface for disk page read function. - * \a page is the page address, \a addr the address inside the page, - * \a size the lenght to be read. - * \return the number of bytes read. - */ -typedef size_t (*disk_page_read_t) (struct BattFsSuper *d, pgcnt_t page, pgaddr_t addr, void *buf, size_t); - -/** - * Type interface for disk page write function. - * \a page is the page address, \a addr the address inside the page, - * \a size the lenght to be written. - * \return the number of bytes written. - */ -typedef size_t (*disk_page_write_t) (struct BattFsSuper *d, pgcnt_t page, pgaddr_t addr, void *buf, size_t); - -/** - * Type interface for disk page erase function. - * \a page is the page address. - * \return true if all is ok, false otherwise. - */ -typedef bool (*disk_page_erase_t) (struct BattFsSuper *d, pgcnt_t page); - -/** - * Type interface for disk deinit function. - * \return true if all is ok, false otherwise. - */ -typedef bool (*disk_close_t) (struct BattFsSuper *d); - - -typedef uint32_t disk_size_t; ///< Type for disk sizes. - -/** - * Context used to describe a disk. - * This context structure will be used to access disk. - * Must be initialized by hw memory driver. - */ -typedef struct BattFsSuper -{ - disk_open_t open; ///< Disk init. - disk_page_read_t read; ///< Page read. - disk_page_write_t write; ///< Page write. - disk_page_erase_t erase; ///< Page erase. - disk_close_t close; ///< Disk deinit. - - pgaddr_t page_size; ///< Size of a disk page, in bytes. - pgcnt_t page_count; ///< Number of pages on disk. - - /** - * Page allocation array. - * This array must be allocated somewhere and - * must have enough space for page_count elements. - * Is used by the filesystem to represent - * the entire disk in memory. - */ - pgcnt_t *page_array; - - disk_size_t disk_size; ///< Size of the disk, in bytes (page_count * page_size). - disk_size_t free_bytes; ///< Free space on the disk. - - /* 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 */