uffs_buf.h

Go to the documentation of this file.
00001 
00007 #ifndef UFFS_BUF_H
00008 #define UFFS_BUF_H
00009 
00010 #include "uffs/uffs_types.h"
00011 #include "uffs/uffs_device.h"
00012 #include "uffs/uffs_tree.h"
00013 
00014 #ifdef __cplusplus
00015 extern "C"{
00016 #endif
00017     
00018 #define CLONE_BUF_MARK      0xffff
00019 
00020 #define UFFS_BUF_EMPTY      0
00021 #define UFFS_BUF_VALID      1
00022 #define UFFS_BUF_DIRTY      2
00023 
00025 struct uffs_BufSt{
00026     struct uffs_BufSt *next;    
00027     struct uffs_BufSt *prev;    
00028     struct uffs_BufSt *nextDirty;
00029     struct uffs_BufSt *prevDirty;
00030     u8 type;                    
00031     u16 father;                 
00032     u16 serial;                 
00033     u16 pageID;                 
00034     u16 mark;                   
00035     u16 refCount;               
00036     u16 dataLen;                
00037     u8 * data;                  
00038     u8 * ecc;                   
00039 };
00040 
00041 
00042 URET uffs_BufInit(struct uffs_DeviceSt *dev, int maxBuf, int maxDirtyBuf);
00043 URET uffs_BufReleaseAll(struct uffs_DeviceSt *dev);
00044 
00045 uffs_Buf * uffs_BufGet(struct uffs_DeviceSt *dev, u16 father, u16 serial, u16 pageID);
00046 uffs_Buf *uffs_BufNew(struct uffs_DeviceSt *dev, u8 type, u16 father, u16 serial, u16 pageID);
00047 uffs_Buf *uffs_BufGetEx(struct uffs_DeviceSt *dev, u8 type, TreeNode *node, u16 pageID);
00048 uffs_Buf * uffs_BufFind(uffs_Device *dev, u16 father, u16 serial, u16 pageID);
00049 
00050 URET uffs_BufPut(uffs_Device *dev, uffs_Buf *buf);
00051 
00052 void uffs_BufIncRef(uffs_Buf *buf);
00053 void uffs_BufDecRef(uffs_Buf *buf);
00054 URET uffs_BufWrite(struct uffs_DeviceSt *dev, uffs_Buf *buf, void *data, u32 ofs, u32 len);
00055 URET uffs_BufRead(struct uffs_DeviceSt *dev, uffs_Buf *buf, void *data, u32 ofs, u32 len);
00056 void uffs_BufSetMark(uffs_Buf *buf, int mark);
00057 URET uffs_BufFlush(struct uffs_DeviceSt *dev);
00058 
00059 UBOOL uffs_BufIsAllFree(struct uffs_DeviceSt *dev);
00060 UBOOL uffs_BufIsAllEmpty(struct uffs_DeviceSt *dev);
00061 URET uffs_BufSetAllEmpty(struct uffs_DeviceSt *dev);
00062 
00063 uffs_Buf * uffs_BufClone(struct uffs_DeviceSt *dev, uffs_Buf *buf);
00064 void uffs_BufFreeClone(uffs_Device *dev, uffs_Buf *buf);
00065 
00066 URET uffs_LoadPhiDataToBuf(uffs_Device *dev, uffs_Buf *buf, u32 block, u32 page);
00067 URET uffs_LoadPhiDataToBufEccUnCare(uffs_Device *dev, uffs_Buf *buf, u32 block, u32 page);
00068 
00069 #ifdef __cplusplus
00070 }
00071 #endif
00072 
00073 
00074 #endif

Generated on Sat Mar 17 15:45:44 2007 for uffs-doc by  doxygen 1.5.0