📄 uffs_buf.h
字号:
/** * \file uffs_buf.h * \brief page buffers * \author Ricky Zheng */#ifndef UFFS_BUF_H#define UFFS_BUF_H#include "uffs/uffs_types.h"#include "uffs/uffs_device.h"#include "uffs/uffs_tree.h"#ifdef __cplusplusextern "C"{#endif #define CLONE_BUF_MARK 0xffff#define UFFS_BUF_EMPTY 0#define UFFS_BUF_VALID 1#define UFFS_BUF_DIRTY 2/** uffs page buffer */struct uffs_BufSt{ struct uffs_BufSt *next; //!< link to next buffer struct uffs_BufSt *prev; //!< link to previous buffer struct uffs_BufSt *nextDirty; struct uffs_BufSt *prevDirty; u8 type; //!< file, dir, or data u16 father; //!< father serial u16 serial; //!< serial u16 pageID; //!< page id u16 mark; //!< #UFFS_BUF_EMPTY, #UFFS_BUF_VALID, or #UFFS_BUF_DIRTY ? u16 refCount; //!< reference counter u16 dataLen; //!< length of data u8 * data; //!< data buffer u8 * ecc; //!< ecc buffer};URET uffs_BufInit(struct uffs_DeviceSt *dev, int maxBuf, int maxDirtyBuf);URET uffs_BufReleaseAll(struct uffs_DeviceSt *dev);uffs_Buf * uffs_BufGet(struct uffs_DeviceSt *dev, u16 father, u16 serial, u16 pageID);uffs_Buf *uffs_BufNew(struct uffs_DeviceSt *dev, u8 type, u16 father, u16 serial, u16 pageID);uffs_Buf *uffs_BufGetEx(struct uffs_DeviceSt *dev, u8 type, TreeNode *node, u16 pageID);uffs_Buf * uffs_BufFind(uffs_Device *dev, u16 father, u16 serial, u16 pageID);URET uffs_BufPut(uffs_Device *dev, uffs_Buf *buf);void uffs_BufIncRef(uffs_Buf *buf);void uffs_BufDecRef(uffs_Buf *buf);URET uffs_BufWrite(struct uffs_DeviceSt *dev, uffs_Buf *buf, void *data, u32 ofs, u32 len);URET uffs_BufRead(struct uffs_DeviceSt *dev, uffs_Buf *buf, void *data, u32 ofs, u32 len);void uffs_BufSetMark(uffs_Buf *buf, int mark);URET uffs_BufFlush(struct uffs_DeviceSt *dev);UBOOL uffs_BufIsAllFree(struct uffs_DeviceSt *dev);UBOOL uffs_BufIsAllEmpty(struct uffs_DeviceSt *dev);URET uffs_BufSetAllEmpty(struct uffs_DeviceSt *dev);uffs_Buf * uffs_BufClone(struct uffs_DeviceSt *dev, uffs_Buf *buf);void uffs_BufFreeClone(uffs_Device *dev, uffs_Buf *buf);URET uffs_LoadPhiDataToBuf(uffs_Device *dev, uffs_Buf *buf, u32 block, u32 page);URET uffs_LoadPhiDataToBufEccUnCare(uffs_Device *dev, uffs_Buf *buf, u32 block, u32 page);
#ifdef __cplusplus}#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -