⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uffs_fs.h

📁 一个NAND FLASH文件系统
💻 H
字号:
/**  * \file uffs_fs.h * \brief uffs basic file operations * \author Ricky Zheng */#ifndef _UFFS_FS_H_#define _UFFS_FS_H_#include "uffs/uffs_types.h"#include "uffs/uffs_public.h"#ifdef __cplusplusextern "C"{#endif#define ENCODE_MBCS		1#define ENCODE_UNICODE	2#define UFFS_DEFAULT_ENCODE		ENCODE_MBCS/** file object */struct uffs_ObjectSt {	/******* objects manager ********/	struct uffs_ObjectSt *next;	struct uffs_ObjectSt *head;
	int devLockCount;
	int devGetCount;	/******** init level 0 ********/	char *name;					//!< name, for open or create
	u32 nameLen;				//!< name length	u16 sum;					//!< sum of name	u32 encode;					//!< encode method of name	uffs_Device *dev;			//!< uffs device	u32 oflag;	u32 pmode;	u8 type;	int pagesOnHead;			//!< data pages on file head block	u16 father;
	/******* init level 1 ********/	TreeNode *node;				//!< file entry node in tree	u16 serial;	u32 attr;	u32 createTime;	u32 lastModify;	u32 access;		/******* output ******/	int err;					//!< error number	/******* current *******/	u32 pos;					//!< current position in file	u8 *buf;	int bufStart;	int bufLen;	int bufMaxLen;

	/***** others *******/
	UBOOL openSucc;			//!< U_TRUE: succ, U_FALSE: fail};typedef struct uffs_ObjectSt uffs_Object;#define US_IWRITE		0x0000200#define US_IREAD		0x0000400#define UO_RDONLY		0x0000		//read only#define UO_WRONLY		0x0001		//write only#define UO_RDWR			0x0002		//read and write#define UO_APPEND		0x0008		//append#define UO_BINARY		0x0000		//no used in uffs#define UO_CREATE		0x0100#define UO_TRUNC		0x0200#define UO_EXCL			0x0400		//

#define UO_DIR			0x1000		//open a directory

#define UENOERR 0		/* no error */#define UEACCES	1		/* Tried to open read-only file						 for writing, or files sharing mode						 does not allow specified operations,						 or given path is directory */#define UEEXIST	2		/* _O_CREAT and _O_EXCL flags specified,							but filename already exists */#define UEINVAL	3		/* Invalid oflag or pmode argument */#define UEMFILE	4		/* No more file handles available						  (too many open files)  */#define UENOENT	5		/* file or path not found */#define UETIME	6		/* can't set file time */#define UEBADF	9		/* invalid file handle */#define UENOMEM	10		/* no enough memory */
#define UEUNKNOWN	11	/* unknown error */
#define _SEEK_CUR		0		/* seek from current position */#define _SEEK_SET		1		/* seek from begining of file */#define _SEEK_END		2		/* seek from end of file */#define USEEK_CUR		_SEEK_CUR#define USEEK_SET		_SEEK_SET#define USEEK_END		_SEEK_ENDtypedef struct uffs_ObjectInfoSt {	uffs_fileInfo info;	u32 len;
	u16 serial;} uffs_ObjectInfo;typedef struct uffs_FindInfoSt {	uffs_Object *obj;
	uffs_Device *dev;	u16 father;
	int step;		//step 0: working on dir entries, 1: working on file entries, 2: stoped.
	int hash;	TreeNode *work;
} uffs_FindInfo;URET uffs_InitObjectBuf(void);uffs_Object * uffs_GetObject(void);void uffs_PutObject(uffs_Object *obj);int uffs_GetObjectIndex(uffs_Object *obj);uffs_Object * uffs_GetObjectByIndex(int idx);URET uffs_OpenObject(uffs_Object *obj, const char *fullname, int oflag, int pmode);URET uffs_TruncateObject(uffs_Object *obj, u32 remain);//URET uffs_CreateObject(uffs_Object *obj, const char *fullname, int pmode);
URET uffs_CreateObject(uffs_Object *obj, const char *fullname, int oflag, int pmode);
URET uffs_CloseObject(uffs_Object *obj);int uffs_WriteObject(uffs_Object *obj, const void *data, int len);int uffs_ReadObject(uffs_Object *obj, void *data, int len);long uffs_SeekObject(uffs_Object *obj, long offset, int origin);int uffs_GetCurOffset(uffs_Object *obj);
int uffs_EndOfFile(uffs_Object *obj);

URET uffs_RenameObject(const char *old_name, const char *new_name);URET uffs_DeleteObject(const char * name);URET uffs_GetObjectInfo(uffs_Object *obj, uffs_ObjectInfo *info);/* find objects */URET uffs_OpenFindObject(uffs_FindInfo *find_handle, const char * dir);URET uffs_FindFirstObject(uffs_ObjectInfo * info, uffs_FindInfo * find_handle);URET uffs_FindNextObject(uffs_ObjectInfo *info, uffs_FindInfo * find_handle);URET uffs_CloseFindObject(uffs_FindInfo * find_handle);#ifdef __cplusplus}#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -