#include "uffs/uffs_types.h"
#include "uffs/ubuffer.h"
Go to the source code of this file.
#define DATA_NODE_ENTRY_LEN (DATA_NODE_HASH_MASK + 1) |
Definition at line 115 of file uffs_tree.h.
Referenced by uffs_FindDataNodeByBlock(), and uffs_InitTreeBuf().
#define DATA_NODE_HASH_MASK 0x1ff |
Definition at line 114 of file uffs_tree.h.
#define DIR_NODE_ENTRY_LEN (DIR_NODE_HASH_MASK + 1) |
Definition at line 109 of file uffs_tree.h.
Referenced by uffs_FindDirNodeByBlock(), uffs_FindDirNodeByName(), uffs_FindDirNodeFromTreeWithFather(), uffs_FindFirstObject(), uffs_FindNextObject(), and uffs_InitTreeBuf().
#define DIR_NODE_HASH_MASK 0x1f |
#define EMPTY_NODE 0xffff |
special index num of empty node.
Definition at line 100 of file uffs_tree.h.
Referenced by _FindPrevNodeFromEntry(), uffs_BreakFromEntry(), uffs_FindDataNode(), uffs_FindDataNodeByBlock(), uffs_FindDirNodeByBlock(), uffs_FindDirNodeByName(), uffs_FindDirNodeFromTree(), uffs_FindDirNodeFromTreeWithFather(), uffs_FindFileNodeByBlock(), uffs_FindFileNodeByName(), uffs_FindFileNodeFromTree(), uffs_FindFileNodeFromTreeWithFather(), uffs_FindFirstObject(), uffs_FindNextObject(), and uffs_InitTreeBuf().
#define FILE_NODE_ENTRY_LEN (FILE_NODE_HASH_MASK + 1) |
Definition at line 112 of file uffs_tree.h.
Referenced by uffs_FindFileNodeByBlock(), uffs_FindFileNodeByName(), uffs_FindFileNodeFromTreeWithFather(), uffs_FindFirstObject(), and uffs_InitTreeBuf().
#define FILE_NODE_HASH_MASK 0x3f |
#define FROM_IDX | ( | idx, | |||
dis | ) | ((TreeNode *)uBufGetBufByIndex(idx, dis)) |
Definition at line 116 of file uffs_tree.h.
Referenced by _FindPrevNodeFromEntry(), uffs_BreakFromEntry(), uffs_FindDataNode(), uffs_FindDataNodeByBlock(), uffs_FindDirNodeByBlock(), uffs_FindDirNodeByName(), uffs_FindDirNodeFromTree(), uffs_FindDirNodeFromTreeWithFather(), uffs_FindFileNodeByBlock(), uffs_FindFileNodeByName(), uffs_FindFileNodeFromTree(), uffs_FindFileNodeFromTreeWithFather(), uffs_FindFirstObject(), and uffs_FindNextObject().
#define GET_DATA_HASH | ( | father, | |||
serial | ) | ((father + serial) & DATA_NODE_HASH_MASK) |
Definition at line 122 of file uffs_tree.h.
Referenced by uffs_BreakFromEntry(), and uffs_FindDataNode().
#define GET_DIR_HASH | ( | serial | ) | (serial & DIR_NODE_HASH_MASK) |
#define GET_FILE_HASH | ( | serial | ) | (serial & FILE_NODE_HASH_MASK) |
#define INVALID_UFFS_SERIAL 0xffff |
#define MAX_UFFS_SERIAL 0xfffe |
#define ROOT_DIR_ID 0 |
serial num of root dir
Definition at line 102 of file uffs_tree.h.
Referenced by uffs_FindFreeFsnSerial(), uffs_InitTreeBuf(), uffs_OpenFindObject(), and uffs_RenameObject().
#define SEARCH_REGION_BAD 8 |
#define SEARCH_REGION_DATA 4 |
Definition at line 160 of file uffs_tree.h.
Referenced by uffs_FindNodeByBlock(), and uffs_RecoverBadBlock().
#define SEARCH_REGION_DIR 1 |
Definition at line 158 of file uffs_tree.h.
Referenced by uffs_FindNodeByBlock(), and uffs_RecoverBadBlock().
#define SEARCH_REGION_ERASED 16 |
#define SEARCH_REGION_FILE 2 |
Definition at line 159 of file uffs_tree.h.
Referenced by uffs_FindNodeByBlock(), and uffs_RecoverBadBlock().
#define SERIAL_ROOT_DIR 0 |
Definition at line 19 of file uffs_tree.h.
#define TO_IDX | ( | p, | |||
dis | ) | ((u16)uBufGetIndex((void *)p, dis)) |
#define UFFS_TYPE_DATA 2 |
Definition at line 15 of file uffs_tree.h.
Referenced by uffs_BreakFromEntry(), uffs_BufFlush(), uffs_BufGetEx(), uffs_FindFromTree(), uffs_GetBlockFileDataLength(), uffs_InsertNodeToTree(), uffs_ReadObject(), uffs_RecoverBadBlock(), uffs_SetTreeNodeBlock(), and uffs_TruncateObject().
#define UFFS_TYPE_DIR 0 |
Definition at line 13 of file uffs_tree.h.
Referenced by uffs_BreakFromEntry(), uffs_BufFlush(), uffs_BufGetEx(), uffs_CloseObject(), uffs_CompareFileNameWithTreeNode(), uffs_DeleteObject(), uffs_FindDirNodeByName(), uffs_FindFirstObject(), uffs_FindFromTree(), uffs_FindNextObject(), uffs_InsertNodeToTree(), uffs_ReadObject(), uffs_RecoverBadBlock(), uffs_RenameObject(), uffs_SeekObject(), uffs_SetTreeNodeBlock(), uffs_TruncateObject(), and uffs_WriteObject().
#define UFFS_TYPE_FILE 1 |
Definition at line 14 of file uffs_tree.h.
Referenced by uffs_BreakFromEntry(), uffs_BufFlush(), uffs_BufGetEx(), uffs_CloseObject(), uffs_EndOfFile(), uffs_FindFileNodeByName(), uffs_FindFirstObject(), uffs_FindFromTree(), uffs_GetBlockFileDataLength(), uffs_InsertNodeToTree(), uffs_ReadObject(), uffs_RecoverBadBlock(), and uffs_SetTreeNodeBlock().
#define UFFS_TYPE_RESV 3 |
Definition at line 16 of file uffs_tree.h.
typedef struct uffs_treeNodeSt TreeNode |
void uffs_BreakFromEntry | ( | uffs_Device * | dev, | |
u8 | type, | |||
TreeNode * | node | |||
) |
break the node from entry
Definition at line 889 of file uffs_tree.c.
References _FindPrevNodeFromEntry(), uffs_treeNodeSt::data, uffs_treeSt::dataEntry, uffs_treeNodeSt::dir, uffs_treeSt::dirEntry, uffs_treeSt::dis, EMPTY_NODE, fdataSt::father, uffs_treeNodeSt::file, uffs_treeSt::fileEntry, FROM_IDX, GET_DATA_HASH, GET_DIR_HASH, GET_FILE_HASH, uffs_treeNodeSt::hashNext, NULL, PFX, dirhSt::serial, filehSt::serial, fdataSt::serial, TO_IDX, uffs_DeviceSt::tree, uffs_treeNodeSt::u, UFFS_ERR_SERIOUS, uffs_Perror(), UFFS_TYPE_DATA, UFFS_TYPE_DIR, and UFFS_TYPE_FILE.
Referenced by uffs_DeleteObject(), and uffs_TruncateObject().
URET uffs_BuildTree | ( | uffs_Device * | dev | ) |
build tree structure from flash
[in] | dev | uffs device |
Definition at line 770 of file uffs_tree.c.
References PFX, U_SUCC, UFFS_ERR_SERIOUS, and uffs_Perror().
Referenced by uffs_FormatDevice(), and uffs_InitDevice().
UBOOL uffs_CompareFileNameWithTreeNode | ( | uffs_Device * | dev, | |
const char * | name, | |||
u32 | len, | |||
u16 | sum, | |||
TreeNode * | node, | |||
int | type | |||
) |
Definition at line 658 of file uffs_tree.c.
References dirhSt::block, filehSt::block, uffs_TagsSt::dataSum, uffs_treeNodeSt::dir, uffs_treeNodeSt::file, NULL, uffs_DeviceSt::ops, PFX, uffs_DeviceOpsSt::ReadPageData, uffs_blockInfoSt::spares, uffs_pageSpareSt::tag, uffs_treeNodeSt::u, U_FAIL, U_FALSE, U_TRUE, UFFS_ALL_PAGES, uffs_CompareFileName(), UFFS_ERR_NORMAL, UFFS_ERR_SERIOUS, uffs_FindBestPageInBlock(), uffs_GetBlockInfo(), uffs_LoadBlockInfo(), uffs_Perror(), uffs_PutBlockInfo(), and UFFS_TYPE_DIR.
Referenced by uffs_FindDirNodeByName(), and uffs_FindFileNodeByName().
TreeNode* uffs_FindBadNodeByBlock | ( | uffs_Device * | dev, | |
u16 | block | |||
) |
Definition at line 534 of file uffs_tree.c.
References uffs_treeSt::bad, blocklistSt::block, uffs_treeNodeSt::list, blocklistSt::next, NULL, uffs_DeviceSt::tree, and uffs_treeNodeSt::u.
Referenced by uffs_FindNodeByBlock().
TreeNode* uffs_FindDataNode | ( | uffs_Device * | dev, | |
u16 | father, | |||
u16 | serial | |||
) |
Definition at line 482 of file uffs_tree.c.
References uffs_treeNodeSt::data, uffs_treeSt::dataEntry, uffs_treeSt::dis, EMPTY_NODE, fdataSt::father, FROM_IDX, GET_DATA_HASH, uffs_treeNodeSt::hashNext, NULL, fdataSt::serial, uffs_DeviceSt::tree, and uffs_treeNodeSt::u.
Referenced by uffs_BufFlush(), uffs_FindFromTree(), uffs_ReadObject(), uffs_TruncateObject(), and uffs_WriteObject().
TreeNode* uffs_FindDataNodeByBlock | ( | uffs_Device * | dev, | |
u16 | block | |||
) |
Definition at line 565 of file uffs_tree.c.
References fdataSt::block, uffs_treeNodeSt::data, DATA_NODE_ENTRY_LEN, uffs_treeSt::dataEntry, uffs_treeSt::dis, EMPTY_NODE, FROM_IDX, uffs_treeNodeSt::hashNext, uffs_DeviceSt::tree, and uffs_treeNodeSt::u.
Referenced by uffs_FindNodeByBlock().
TreeNode* uffs_FindDirNodeByBlock | ( | uffs_Device * | dev, | |
u16 | block | |||
) |
Definition at line 503 of file uffs_tree.c.
References dirhSt::block, uffs_treeNodeSt::dir, DIR_NODE_ENTRY_LEN, uffs_treeSt::dirEntry, uffs_treeSt::dis, EMPTY_NODE, FROM_IDX, uffs_treeNodeSt::hashNext, uffs_DeviceSt::tree, and uffs_treeNodeSt::u.
Referenced by uffs_FindNodeByBlock().
TreeNode* uffs_FindDirNodeByName | ( | uffs_Device * | dev, | |
const char * | name, | |||
u32 | len, | |||
u16 | sum, | |||
u16 | father | |||
) |
Definition at line 625 of file uffs_tree.c.
References dirhSt::checkSum, uffs_treeNodeSt::dir, DIR_NODE_ENTRY_LEN, uffs_treeSt::dirEntry, uffs_treeSt::dis, EMPTY_NODE, dirhSt::father, FROM_IDX, uffs_treeNodeSt::hashNext, uffs_DeviceSt::tree, uffs_treeNodeSt::u, U_TRUE, uffs_CompareFileNameWithTreeNode(), and UFFS_TYPE_DIR.
TreeNode* uffs_FindDirNodeFromTree | ( | uffs_Device * | dev, | |
u16 | serial | |||
) |
Definition at line 414 of file uffs_tree.c.
References uffs_treeNodeSt::dir, DIR_NODE_HASH_MASK, uffs_treeSt::dirEntry, uffs_treeSt::dis, EMPTY_NODE, FROM_IDX, uffs_treeNodeSt::hashNext, NULL, dirhSt::serial, uffs_DeviceSt::tree, and uffs_treeNodeSt::u.
Referenced by uffs_BufFlush(), uffs_FindFreeFsnSerial(), and uffs_FindFromTree().
TreeNode* uffs_FindDirNodeFromTreeWithFather | ( | uffs_Device * | dev, | |
u16 | father | |||
) |
Definition at line 435 of file uffs_tree.c.
References uffs_treeNodeSt::dir, DIR_NODE_ENTRY_LEN, uffs_treeSt::dirEntry, uffs_treeSt::dis, EMPTY_NODE, dirhSt::father, FROM_IDX, uffs_treeNodeSt::hashNext, uffs_DeviceSt::tree, and uffs_treeNodeSt::u.
Referenced by uffs_DeleteObject().
TreeNode* uffs_FindErasedNodeByBlock | ( | uffs_Device * | dev, | |
u16 | block | |||
) |
Definition at line 522 of file uffs_tree.c.
References blocklistSt::block, uffs_treeSt::erased, uffs_treeNodeSt::list, blocklistSt::next, NULL, uffs_DeviceSt::tree, and uffs_treeNodeSt::u.
Referenced by uffs_FindNodeByBlock().
TreeNode* uffs_FindFileNodeByBlock | ( | uffs_Device * | dev, | |
u16 | block | |||
) |
Definition at line 546 of file uffs_tree.c.
References filehSt::block, uffs_treeSt::dis, EMPTY_NODE, uffs_treeNodeSt::file, FILE_NODE_ENTRY_LEN, uffs_treeSt::fileEntry, FROM_IDX, uffs_treeNodeSt::hashNext, uffs_DeviceSt::tree, and uffs_treeNodeSt::u.
Referenced by uffs_FindNodeByBlock().
TreeNode* uffs_FindFileNodeByName | ( | uffs_Device * | dev, | |
const char * | name, | |||
u32 | len, | |||
u16 | sum, | |||
u16 | father | |||
) |
Definition at line 458 of file uffs_tree.c.
References filehSt::checkSum, uffs_treeSt::dis, EMPTY_NODE, filehSt::father, uffs_treeNodeSt::file, FILE_NODE_ENTRY_LEN, uffs_treeSt::fileEntry, FROM_IDX, uffs_treeNodeSt::hashNext, uffs_DeviceSt::tree, uffs_treeNodeSt::u, U_TRUE, uffs_CompareFileNameWithTreeNode(), and UFFS_TYPE_FILE.
TreeNode* uffs_FindFileNodeFromTree | ( | uffs_Device * | dev, | |
u16 | serial | |||
) |
Definition at line 371 of file uffs_tree.c.
References uffs_treeSt::dis, EMPTY_NODE, uffs_treeNodeSt::file, FILE_NODE_HASH_MASK, uffs_treeSt::fileEntry, FROM_IDX, uffs_treeNodeSt::hashNext, NULL, filehSt::serial, uffs_DeviceSt::tree, and uffs_treeNodeSt::u.
Referenced by uffs_BufFlush(), uffs_FindFreeFsnSerial(), and uffs_FindFromTree().
TreeNode* uffs_FindFileNodeFromTreeWithFather | ( | uffs_Device * | dev, | |
u16 | father | |||
) |
Definition at line 392 of file uffs_tree.c.
References uffs_treeSt::dis, EMPTY_NODE, filehSt::father, uffs_treeNodeSt::file, FILE_NODE_ENTRY_LEN, uffs_treeSt::fileEntry, FROM_IDX, uffs_treeNodeSt::hashNext, uffs_DeviceSt::tree, and uffs_treeNodeSt::u.
Referenced by uffs_DeleteObject().
u16 uffs_FindFreeFsnSerial | ( | uffs_Device * | dev | ) |
find a free file or dir serial NO
[in] | dev | uffs device |
Definition at line 807 of file uffs_tree.c.
References INVALID_UFFS_SERIAL, MAX_UFFS_SERIAL, NULL, ROOT_DIR_ID, uffs_FindDirNodeFromTree(), and uffs_FindFileNodeFromTree().
TreeNode* uffs_FindNodeByBlock | ( | uffs_Device * | dev, | |
u16 | block, | |||
int * | region | |||
) |
Definition at line 584 of file uffs_tree.c.
References NULL, SEARCH_REGION_BAD, SEARCH_REGION_DATA, SEARCH_REGION_DIR, SEARCH_REGION_ERASED, SEARCH_REGION_FILE, uffs_FindBadNodeByBlock(), uffs_FindDataNodeByBlock(), uffs_FindDirNodeByBlock(), uffs_FindErasedNodeByBlock(), and uffs_FindFileNodeByBlock().
Referenced by uffs_RecoverBadBlock().
TreeNode* uffs_GetErased | ( | uffs_Device * | dev | ) |
Definition at line 825 of file uffs_tree.c.
References uffs_treeSt::erased, uffs_treeSt::erased_tail, uffs_treeSt::erasedCount, uffs_treeNodeSt::list, blocklistSt::next, NULL, blocklistSt::prev, uffs_DeviceSt::tree, and uffs_treeNodeSt::u.
Referenced by uffs_RecoverBadBlock().
URET uffs_InitTreeBuf | ( | uffs_Device * | dev | ) |
initialize tree buffers
[in] | dev | uffs device |
Definition at line 24 of file uffs_tree.c.
References uffs_treeSt::bad, uffs_treeSt::badCount, DATA_NODE_ENTRY_LEN, uffs_treeSt::dataEntry, DIR_NODE_ENTRY_LEN, uffs_treeSt::dirEntry, uffs_treeSt::dis, EMPTY_NODE, uffs_partitionSt::end, uffs_treeSt::erased, uffs_treeSt::erased_tail, uffs_treeSt::erasedCount, FILE_NODE_ENTRY_LEN, uffs_treeSt::fileEntry, uffs_treeSt::maxSerialNo, ubufm::node_nums, ubufm::node_pool, ubufm::node_size, NULL, uffs_DeviceSt::par, PFX, ROOT_DIR_ID, uffs_partitionSt::start, uffs_DeviceSt::tree, U_FAIL, U_SUCC, uBufInit(), UFFS_ERR_SERIOUS, uffs_MemAlloc(), and uffs_Perror().
Referenced by uffs_FormatDevice(), and uffs_InitDevice().
void uffs_InsertNodeToTree | ( | uffs_Device * | dev, | |
u8 | type, | |||
TreeNode * | node | |||
) |
insert a TreeNode *node to tree
[in] | dev | uffs device |
[in] | type | type of node |
[in] | node | node to be insert to |
Definition at line 134 of file uffs_tree.c.
References PFX, UFFS_ERR_SERIOUS, uffs_Perror(), UFFS_TYPE_DATA, UFFS_TYPE_DIR, and UFFS_TYPE_FILE.
void uffs_InsertToBadBlockList | ( | uffs_Device * | dev, | |
TreeNode * | node | |||
) |
Definition at line 983 of file uffs_tree.c.
References uffs_treeSt::bad, uffs_treeSt::badCount, uffs_treeNodeSt::list, blocklistSt::next, NULL, blocklistSt::prev, uffs_DeviceSt::tree, and uffs_treeNodeSt::u.
Referenced by uffs_RecoverBadBlock().
void uffs_InsertToErasedListHead | ( | uffs_Device * | dev, | |
TreeNode * | node | |||
) |
Definition at line 947 of file uffs_tree.c.
References uffs_treeSt::erased, uffs_treeSt::erased_tail, uffs_treeSt::erasedCount, uffs_treeNodeSt::list, blocklistSt::next, NULL, blocklistSt::prev, uffs_DeviceSt::tree, and uffs_treeNodeSt::u.
void uffs_InsertToErasedListTail | ( | uffs_Device * | dev, | |
TreeNode * | node | |||
) |
Definition at line 965 of file uffs_tree.c.
References uffs_treeSt::erased, uffs_treeSt::erased_tail, uffs_treeSt::erasedCount, uffs_treeNodeSt::list, blocklistSt::next, NULL, blocklistSt::prev, uffs_DeviceSt::tree, and uffs_treeNodeSt::u.
Referenced by uffs_DeleteObject(), uffs_RecoverBadBlock(), and uffs_TruncateObject().
URET uffs_ReleaseTreeBuf | ( | uffs_Device * | dev | ) |
release tree buffers, call this function when unmount
[in] | dev | uffs device |
Definition at line 72 of file uffs_tree.c.
References uffs_treeSt::dis, ubufm::node_pool, uffs_DeviceSt::tree, U_SUCC, and uffs_MemFree().
Referenced by uffs_FormatDevice(), and uffs_ReleaseDevice().
set tree node block value
Definition at line 999 of file uffs_tree.c.
References filehSt::block, dirhSt::block, fdataSt::block, uffs_treeNodeSt::data, uffs_treeNodeSt::dir, uffs_treeNodeSt::file, uffs_treeNodeSt::u, UFFS_TYPE_DATA, UFFS_TYPE_DIR, and UFFS_TYPE_FILE.