#include "uffs/uffs_fs.h"
#include "uffs/uffs_config.h"
#include "uffs/ubuffer.h"
#include "uffs/uffs_ecc.h"
#include "uffs/uffs_badblock.h"
#include "uffs/uffs_os.h"
#include <string.h>
Go to the source code of this file.
Defines | |
#define | GET_BLOCK_FROM_NODE(obj) ((obj)->type == UFFS_TYPE_DIR ? (obj)->node->u.dir.block : (obj)->node->u.file.block) |
#define | GET_SERIAL_FROM_NODE(obj) ((obj)->type == UFFS_TYPE_DIR ? (obj)->node->u.dir.serial : (obj)->node->u.file.serial) |
#define | PFX "fs:" |
Functions | |
URET | uffs_CloseFindObject (uffs_FindInfo *f) |
URET | uffs_CloseObject (uffs_Object *obj) |
URET | uffs_CreateObject (uffs_Object *obj, const char *fullname, int oflag, int pmode) |
URET | uffs_DeleteObject (const char *name) |
int | uffs_EndOfFile (uffs_Object *obj) |
URET | uffs_FindFirstObject (uffs_ObjectInfo *info, uffs_FindInfo *f) |
URET | uffs_FindNextObject (uffs_ObjectInfo *info, uffs_FindInfo *f) |
int | uffs_GetCurOffset (uffs_Object *obj) |
uffs_Object * | uffs_GetObject (void) |
uffs_Object * | uffs_GetObjectByIndex (int idx) |
int | uffs_GetObjectIndex (uffs_Object *obj) |
URET | uffs_GetObjectInfo (uffs_Object *obj, uffs_ObjectInfo *info) |
URET | uffs_InitObjectBuf (void) |
URET | uffs_OpenFindObject (uffs_FindInfo *f, const char *dir) |
URET | uffs_OpenObject (uffs_Object *obj, const char *fullname, int oflag, int pmode) |
void | uffs_PutObject (uffs_Object *obj) |
int | uffs_ReadObject (uffs_Object *obj, void *data, int len) |
URET | uffs_RenameObject (const char *old_name, const char *new_name) |
long | uffs_SeekObject (uffs_Object *obj, long offset, int origin) |
URET | uffs_TruncateObject (uffs_Object *obj, u32 remain) |
int | uffs_WriteObject (uffs_Object *obj, const void *data, int len) |
Definition in file uffs_fs.c.
#define GET_BLOCK_FROM_NODE | ( | obj | ) | ((obj)->type == UFFS_TYPE_DIR ? (obj)->node->u.dir.block : (obj)->node->u.file.block) |
#define GET_SERIAL_FROM_NODE | ( | obj | ) | ((obj)->type == UFFS_TYPE_DIR ? (obj)->node->u.dir.serial : (obj)->node->u.file.serial) |
URET uffs_CloseFindObject | ( | uffs_FindInfo * | f | ) |
Definition at line 1708 of file uffs_fs.c.
References uffs_FindInfoSt::dev, uffs_FindInfoSt::hash, NULL, uffs_FindInfoSt::obj, U_FAIL, U_SUCC, uffs_PutObject(), and uffs_FindInfoSt::work.
Referenced by cmdLs().
URET uffs_CloseObject | ( | uffs_Object * | obj | ) |
Definition at line 567 of file uffs_fs.c.
References uffs_ObjectSt::dev, uffs_fileInfoSt::lastModify, uffs_ObjectSt::node, NULL, uffs_ObjectSt::oflag, uffs_ObjectSt::openSucc, PFX, uffs_ObjectSt::type, U_FAIL, U_SUCC, U_TRUE, uffs_BufFlush(), uffs_BufGetEx(), uffs_BufPut(), uffs_BufRead(), uffs_BufWrite(), UFFS_ERR_SERIOUS, uffs_GetCurDateTime(), uffs_Perror(), UFFS_TYPE_DIR, UFFS_TYPE_FILE, UO_APPEND, UO_CREATE, UO_RDWR, UO_TRUNC, and UO_WRONLY.
Referenced by cmdCat(), cmdCp(), cmdMkdir(), cmdMkf(), cmdTest1(), DoTest(), and uffs_RenameObject().
URET uffs_CreateObject | ( | uffs_Object * | obj, | |
const char * | fullname, | |||
int | oflag, | |||
int | pmode | |||
) |
URET uffs_DeleteObject | ( | const char * | name | ) |
delete uffs object
< make this buffer expired. Dangerous !? TODO: lock buffer ?
< ok, the object is deleted now.
Definition at line 1298 of file uffs_fs.c.
References blocklistSt::block, uffs_ObjectSt::dev, uffs_ObjectSt::father, GET_BLOCK_FROM_NODE, HAVE_BADBLOCK, uffs_treeNodeSt::list, uffs_BufSt::mark, uffs_ObjectSt::node, NULL, PFX, uffs_BufSt::refCount, uffs_ObjectSt::serial, uffs_ObjectSt::type, uffs_treeNodeSt::u, U_FAIL, U_SUCC, uffs_BreakFromEntry(), UFFS_BUF_EMPTY, uffs_BufFind(), uffs_BufFlush(), UFFS_ERR_NORMAL, uffs_FindDirNodeFromTreeWithFather(), uffs_FindFileNodeFromTreeWithFather(), uffs_GetObject(), uffs_InsertToErasedListTail(), uffs_OpenObject(), uffs_Perror(), uffs_RecoverBadBlock(), uffs_TruncateObject(), UFFS_TYPE_DIR, UO_RDWR, US_IREAD, and US_IWRITE.
Referenced by cmdRm().
int uffs_EndOfFile | ( | uffs_Object * | obj | ) |
check whether the file pointer is at the end of file
[in] | obj | uffs object |
Definition at line 1035 of file uffs_fs.c.
References uffs_ObjectSt::dev, uffs_treeNodeSt::file, filehSt::len, uffs_ObjectSt::node, uffs_ObjectSt::openSucc, uffs_ObjectSt::pos, uffs_ObjectSt::type, uffs_treeNodeSt::u, U_TRUE, and UFFS_TYPE_FILE.
URET uffs_FindFirstObject | ( | uffs_ObjectInfo * | info, | |
uffs_FindInfo * | f | |||
) |
Definition at line 1564 of file uffs_fs.c.
References uffs_FindInfoSt::dev, uffs_treeNodeSt::dir, DIR_NODE_ENTRY_LEN, uffs_treeSt::dirEntry, uffs_treeSt::dis, EMPTY_NODE, filehSt::father, uffs_FindInfoSt::father, dirhSt::father, uffs_treeNodeSt::file, FILE_NODE_ENTRY_LEN, uffs_treeSt::fileEntry, FROM_IDX, uffs_FindInfoSt::hash, uffs_treeNodeSt::hashNext, uffs_FindInfoSt::step, uffs_DeviceSt::tree, uffs_treeNodeSt::u, U_FAIL, U_SUCC, uffs_DeviceLock(), uffs_DeviceUnLock(), UFFS_TYPE_DIR, UFFS_TYPE_FILE, and uffs_FindInfoSt::work.
Referenced by cmdLs().
URET uffs_FindNextObject | ( | uffs_ObjectInfo * | info, | |
uffs_FindInfo * | f | |||
) |
Definition at line 1622 of file uffs_fs.c.
References uffs_FindInfoSt::dev, uffs_treeNodeSt::dir, DIR_NODE_ENTRY_LEN, uffs_treeSt::dirEntry, uffs_treeSt::dis, EMPTY_NODE, uffs_FindInfoSt::father, dirhSt::father, FROM_IDX, uffs_FindInfoSt::hash, uffs_treeNodeSt::hashNext, NULL, uffs_FindInfoSt::step, uffs_DeviceSt::tree, uffs_treeNodeSt::u, U_FAIL, U_SUCC, uffs_DeviceLock(), uffs_DeviceUnLock(), UFFS_TYPE_DIR, and uffs_FindInfoSt::work.
Referenced by cmdLs().
int uffs_GetCurOffset | ( | uffs_Object * | obj | ) |
return current file pointer
[in] | obj | uffs object |
Definition at line 1021 of file uffs_fs.c.
References uffs_ObjectSt::dev, uffs_ObjectSt::openSucc, uffs_ObjectSt::pos, and U_TRUE.
uffs_Object* uffs_GetObject | ( | void | ) |
Definition at line 39 of file uffs_fs.c.
References U_FALSE, and uBufGet().
Referenced by cmdCat(), cmdCp(), cmdMkdir(), cmdMkf(), cmdTest1(), DoTest(), uffs_DeleteObject(), uffs_OpenFindObject(), and uffs_RenameObject().
uffs_Object* uffs_GetObjectByIndex | ( | int | idx | ) |
int uffs_GetObjectIndex | ( | uffs_Object * | obj | ) |
URET uffs_GetObjectInfo | ( | uffs_Object * | obj, | |
uffs_ObjectInfo * | info | |||
) |
Definition at line 1502 of file uffs_fs.c.
References uffs_ObjectSt::dev, uffs_ObjectSt::node, uffs_ObjectSt::type, and U_FAIL.
URET uffs_InitObjectBuf | ( | void | ) |
Definition at line 33 of file uffs_fs.c.
References U_FAIL, U_SUCC, and uBufInit().
Referenced by main(), and uffs_initMountTable().
URET uffs_OpenFindObject | ( | uffs_FindInfo * | f, | |
const char * | dir | |||
) |
Definition at line 1518 of file uffs_fs.c.
References uffs_ObjectSt::dev, uffs_FindInfoSt::dev, uffs_FindInfoSt::father, uffs_FindInfoSt::hash, uffs_ObjectSt::nameLen, NULL, uffs_FindInfoSt::obj, PFX, ROOT_DIR_ID, uffs_ObjectSt::serial, uffs_FindInfoSt::step, U_FAIL, U_SUCC, UFFS_ERR_NOISY, UFFS_ERR_SERIOUS, uffs_GetObject(), uffs_Perror(), uffs_PutObject(), UO_RDONLY, US_IREAD, US_IWRITE, and uffs_FindInfoSt::work.
Referenced by cmdLs().
URET uffs_OpenObject | ( | uffs_Object * | obj, | |
const char * | fullname, | |||
int | oflag, | |||
int | pmode | |||
) |
Definition at line 536 of file uffs_fs.c.
References U_FAIL, and U_SUCC.
Referenced by cmdCat(), cmdCp(), cmdTest1(), DoTest(), uffs_DeleteObject(), and uffs_RenameObject().
void uffs_PutObject | ( | uffs_Object * | obj | ) |
Definition at line 50 of file uffs_fs.c.
References uBufPut().
Referenced by cmdCat(), cmdCp(), cmdMkdir(), cmdMkf(), cmdTest1(), DoTest(), uffs_CloseFindObject(), uffs_OpenFindObject(), and uffs_RenameObject().
int uffs_ReadObject | ( | uffs_Object * | obj, | |
void * | data, | |||
int | len | |||
) |
read data from obj
[in] | obj | uffs object |
[out] | data | output data buffer |
[in] | len | required length of data to be read from object->pos |
fdn == 0: this means that the reading range is start from the first block, since the page 0 is for file attr, so we move to the next page ID.
Definition at line 875 of file uffs_fs.c.
References uffs_DeviceSt::com, uffs_BufSt::dataLen, uffs_ObjectSt::dev, uffs_treeNodeSt::file, HAVE_BADBLOCK, filehSt::len, uffs_ObjectSt::node, NULL, uffs_ObjectSt::oflag, uffs_ObjectSt::openSucc, PFX, uffs_commInfoSt::pgDataSize, uffs_ObjectSt::pos, filehSt::serial, uffs_ObjectSt::type, uffs_treeNodeSt::u, U_FALSE, uffs_BufGetEx(), uffs_BufPut(), uffs_BufRead(), UFFS_ERR_NOISY, UFFS_ERR_SERIOUS, uffs_FindDataNode(), uffs_Perror(), uffs_RecoverBadBlock(), UFFS_TYPE_DATA, UFFS_TYPE_DIR, UFFS_TYPE_FILE, and UO_WRONLY.
Referenced by cmdCat(), cmdCp(), cmdTest1(), and DoTest().
URET uffs_RenameObject | ( | const char * | old_name, | |
const char * | new_name | |||
) |
Definition at line 1359 of file uffs_fs.c.
References filehSt::checkSum, dirhSt::checkSum, uffs_BufSt::data, uffs_ObjectSt::dev, uffs_treeNodeSt::dir, filehSt::father, dirhSt::father, uffs_treeNodeSt::file, uffs_fileInfoSt::lastModify, MAX_PATH_LENGTH, uffs_fileInfoSt::name, uffs_fileInfoSt::name_len, uffs_ObjectSt::node, NULL, PFX, ROOT_DIR_ID, uffs_ObjectSt::serial, uffs_ObjectSt::sum, uffs_ObjectSt::type, uffs_treeNodeSt::u, U_FAIL, U_SUCC, uffs_BufFlush(), uffs_BufGetEx(), uffs_BufPut(), uffs_BufWrite(), uffs_CloseObject(), UFFS_ERR_NOISY, UFFS_ERR_SERIOUS, uffs_GetCurDateTime(), uffs_GetObject(), uffs_MakeSum16(), uffs_OpenObject(), uffs_Perror(), uffs_PutObject(), UFFS_TYPE_DIR, UO_RDONLY, UO_RDWR, US_IREAD, and US_IWRITE.
Referenced by cmdRen().
long uffs_SeekObject | ( | uffs_Object * | obj, | |
long | offset, | |||
int | origin | |||
) |
move the file pointer
[in] | obj | uffs object |
[in] | offset | offset from origin |
[in] | origin | the origin position, one of: |
Definition at line 972 of file uffs_fs.c.
References uffs_treeNodeSt::file, filehSt::len, uffs_ObjectSt::node, PFX, uffs_ObjectSt::pos, uffs_ObjectSt::type, uffs_treeNodeSt::u, UFFS_ERR_NOISY, uffs_Perror(), UFFS_TYPE_DIR, USEEK_CUR, USEEK_END, and USEEK_SET.
Referenced by cmdTest1(), and DoTest().
URET uffs_TruncateObject | ( | uffs_Object * | obj, | |
u32 | remain | |||
) |
Definition at line 1216 of file uffs_fs.c.
References uffs_DeviceSt::attr, blocklistSt::block, fdataSt::block, uffs_blockInfoSt::blockNum, uffs_treeNodeSt::data, uffs_ObjectSt::dev, uffs_ObjectSt::err, uffs_treeNodeSt::file, HAVE_BADBLOCK, filehSt::len, uffs_treeNodeSt::list, uffs_ObjectSt::node, NULL, uffs_ObjectSt::openSucc, uffs_storageAttrSt::pages_per_block, PFX, filehSt::serial, uffs_ObjectSt::type, uffs_treeNodeSt::u, U_FAIL, U_FALSE, U_SUCC, UEEXIST, UFFS_ALL_PAGES, uffs_BreakFromEntry(), UFFS_BUF_EMPTY, uffs_BufFind(), uffs_BufFlush(), uffs_BufSetMark(), UFFS_ERR_SERIOUS, uffs_ExpireBlockInfo(), uffs_FindDataNode(), uffs_GetBlockInfo(), uffs_InsertToErasedListTail(), uffs_Perror(), uffs_PutBlockInfo(), uffs_RecoverBadBlock(), UFFS_TYPE_DATA, and UFFS_TYPE_DIR.
Referenced by uffs_DeleteObject().
int uffs_WriteObject | ( | uffs_Object * | obj, | |
const void * | data, | |||
int | len | |||
) |
write data to obj, from obj->pos
[in] | obj | file obj |
[in] | data | data pointer |
[in] | len | length of data to be write |
Definition at line 788 of file uffs_fs.c.
References uffs_ObjectSt::dev, uffs_treeSt::erasedCount, uffs_treeNodeSt::file, HAVE_BADBLOCK, filehSt::len, MINIMUN_ERASED_BLOCK, uffs_ObjectSt::node, NULL, uffs_ObjectSt::oflag, uffs_ObjectSt::openSucc, PFX, uffs_ObjectSt::pos, filehSt::serial, uffs_DeviceSt::tree, uffs_ObjectSt::type, uffs_treeNodeSt::u, U_FALSE, uffs_BufFlush(), UFFS_ERR_NOISY, UFFS_ERR_SERIOUS, uffs_FindDataNode(), uffs_Perror(), uffs_RecoverBadBlock(), UFFS_TYPE_DIR, UO_APPEND, and UO_RDONLY.
Referenced by cmdCp(), cmdTest1(), and DoTest().