亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? yaffs_guts.h

?? flash 中實(shí)現(xiàn)yaffs的c 文件源碼
?? H
?? 第 1 頁 / 共 2 頁
字號:
typedef union{	yaffs_FileStructure fileVariant;	yaffs_DirectoryStructure directoryVariant;	yaffs_SymLinkStructure symLinkVariant;	yaffs_HardLinkStructure hardLinkVariant;} yaffs_ObjectVariant;struct  yaffs_ObjectStruct{	__u8 deleted: 1;		// This should only apply to unlinked files.	__u8 softDeleted: 1;	// it has also been soft deleted	__u8 unlinked: 1;		// An unlinked file. The file should be in the unlinked pseudo directory.	__u8 fake:1;			// A fake object has no presence on NAND.	__u8 renameAllowed:1;	__u8 unlinkAllowed:1;	__u8 dirty:1;			// the object needs to be written to flash	__u8 valid:1;			// When the file system is being loaded up, this 							// object might be created before the data							// is available (ie. file data records appear before the header).	__u8 serial;			// serial number of chunk in NAND. Store here so we don't have to							// read back the old one to update.	__u16 sum;				// sum of the name to speed searching		struct yaffs_DeviceStruct *myDev; // The device I'm on										struct list_head hashLink;	// list of objects in this hash bucket								struct list_head hardLinks; // all the equivalent hard linked objects								// live on this list	// directory structure stuff	struct yaffs_ObjectStruct  *parent;	//my parent directory	struct list_head siblings;	// siblings in a directory								// also used for linking up the free list			// Where's my data in NAND?	long chunkId;		// where it lives	long nDataChunks;			__u32 objectId;		// the object id value			__u32 st_mode;  	// protection#ifdef CONFIG_YAFFS_SHORT_NAMES_IN_RAM	char shortName[YAFFS_SHORT_NAME_LENGTH+1];#endif#ifndef __KERNEL__	__u32 inUse;#endif#ifdef CONFIG_YAFFS_WINCE	__u32 win_ctime[2];	__u32 win_mtime[2];	__u32 win_atime[2];#else	__u32 st_uid;   	// user ID of owner	__u32 st_gid;    	// group ID of owner 	__u32 st_atime; 	// time of last access	__u32 st_mtime; 	// time of last modification	__u32 st_ctime; 	// time of last change#endif	__u32 st_rdev; 	    // device stuff for block and char devices#ifdef __KERNEL__	struct inode *myInode;#endif		yaffs_ObjectType variantType;		yaffs_ObjectVariant variant;	};typedef struct yaffs_ObjectStruct yaffs_Object;struct yaffs_ObjectList_struct{	yaffs_Object *objects;	struct yaffs_ObjectList_struct *next;};typedef struct yaffs_ObjectList_struct yaffs_ObjectList;typedef struct{	struct list_head list;	long count;} yaffs_ObjectBucket;//////////////////// Device ////////////////////////////////struct yaffs_DeviceStruct{	// Entry parameters set up way early. Yaffs sets up the rest.	long  nBytesPerChunk; 	 // Should be a power of 2 >= 512	long  nChunksPerBlock;	 // does not need to be a power of 2	long  startBlock;		 // Start block we're allowed to use	long  endBlock;			 // End block we're allowed to use	long  nReservedBlocks;	 // We want this tuneable so that we can reduce							 // reserved blocks on NOR and RAM.		int   useNANDECC;		// Flag to decide whether or not to use NANDECC	int   nShortOpCaches;	// If <= 0, then short op caching is disabled, else							// the number of short op caches (don't use too many).			void *genericDevice; // Pointer to device context						 // On an mtd this holds the mtd pointer.	// NAND access functions (Must be set before calling YAFFS)		int (*writeChunkToNAND)(struct yaffs_DeviceStruct *dev, long chunkInNAND, const __u8 *data, yaffs_Spare *spare);	int (*readChunkFromNAND)(struct yaffs_DeviceStruct *dev, long chunkInNAND, __u8 *data, yaffs_Spare *spare);	int (*eraseBlockInNAND)(struct yaffs_DeviceStruct *dev, long blockInNAND);		int (*initialiseNAND)(struct yaffs_DeviceStruct *dev);	// Runtime parameters. Set up by YAFFS.		__u16 chunkGroupBits; // 0 for devices <= 32MB. else log2(nchunks) - 16	__u16 chunkGroupSize; // == 2^^chunkGroupBits	#ifdef __KERNEL__	struct semaphore sem;// Semaphore for waiting on erasure.	struct semaphore grossLock; // Gross locking semaphore#endif	#ifdef __KERNEL__	void (*putSuperFunc)(struct super_block *sb);#endif	int isMounted;		// Block Info	yaffs_BlockInfo *blockInfo;	__u8 *chunkBits;   // bitmap of chunks in use	long  chunkBitmapStride; // Number of bytes of chunkBits per block. 							 //	Must be consistent with nChunksPerBlock.	long  nErasedBlocks;	long  allocationBlock;			// Current block being allocated off	__u32 allocationPage;	long  allocationBlockFinder;	// Used to search for next allocation block		// Runtime state	long  nTnodesCreated;		yaffs_Tnode *freeTnodes;	long  nFreeTnodes;	yaffs_TnodeList *allocatedTnodeList;	long  nObjectsCreated;	yaffs_Object *freeObjects;	long  nFreeObjects;	yaffs_ObjectList *allocatedObjectList;	yaffs_ObjectBucket objectBucket[YAFFS_NOBJECT_BUCKETS];	long  nFreeChunks;			long  currentDirtyChecker;	// Used to find current dirtiest block			// Operations since mount	long nPageWrites;	long nPageReads;	long nBlockErasures;	long nGCCopies;	long garbageCollections;	long passiveGarbageCollections;	long nRetriedWrites;	long nRetiredBlocks;	long eccFixed;	long eccUnfixed;	long tagsEccFixed;	long tagsEccUnfixed;	long nDeletions;	long nUnmarkedDeletions;		yaffs_Object *rootDir;	yaffs_Object *lostNFoundDir;		// Buffer areas for storing data to recover from write failures//	__u8 		bufferedData[YAFFS_CHUNKS_PER_BLOCK][YAFFS_BYTES_PER_CHUNK];//	yaffs_Spare bufferedSpare[YAFFS_CHUNKS_PER_BLOCK];	long bufferedBlock;	// Which block is buffered here?	int doingBufferedBlockRewrite;	yaffs_ChunkCache *srCache;	long srLastUse;	long cacheHits;	// Stuff for background deletion and unlinked files.	yaffs_Object *unlinkedDir;		// Directory where unlinked and deleted files live.	yaffs_Object *unlinkedDeletion;	// Current file being background deleted.	long nDeletedFiles;				// Count of files awaiting deletion;	long nUnlinkedFiles;				// Count of unlinked files. 	long nBackgroundDeletions;		// Count of background deletions.			__u8 *localBuffer;	};typedef struct yaffs_DeviceStruct yaffs_Device;//////////// YAFFS Functions //////////////////int yaffs_GutsInitialise(yaffs_Device *dev);void yaffs_Deinitialise(yaffs_Device *dev);long yaffs_GetNumberOfFreeChunks(yaffs_Device *dev);// Renameint yaffs_RenameObject(yaffs_Object *oldDir, const char *oldName, yaffs_Object *newDir, const char *newName);// generic Object functionsint yaffs_Unlink(yaffs_Object *dir, const char *name);int yaffs_DeleteFile(yaffs_Object *obj);// Object access functions.int yaffs_GetObjectName(yaffs_Object *obj,char *name,int buffSize);long yaffs_GetObjectFileLength(yaffs_Object *obj);long yaffs_GetObjectInode(yaffs_Object *obj);int yaffs_GetObjectType(yaffs_Object *obj);int yaffs_GetObjectLinkCount(yaffs_Object *obj);// Change inode attributesint yaffs_SetAttributes(yaffs_Object *obj, struct iattr *attr);int yaffs_GetAttributes(yaffs_Object *obj, struct iattr *attr);// File operationslong yaffs_ReadDataFromFile(yaffs_Object *obj, __u8 *buffer, __u32 offset, long nBytes);long yaffs_WriteDataToFile(yaffs_Object *obj, const __u8 *buffer, __u32 offset, long nBytes);long yaffs_ResizeFile(yaffs_Object *obj, long newSize);yaffs_Object *yaffs_MknodFile(yaffs_Object *parent,const char *name, __u32 mode, __u32 uid, __u32 gid);int yaffs_FlushFile(yaffs_Object *obj,int updateTime);// Directory operationsyaffs_Object *yaffs_MknodDirectory(yaffs_Object *parent,const char *name, __u32 mode, __u32 uid, __u32 gid);yaffs_Object *yaffs_FindObjectByName(yaffs_Object *theDir,const char *name);int yaffs_ApplyToDirectoryChildren(yaffs_Object *theDir,int (*fn)(yaffs_Object *));yaffs_Object *yaffs_FindObjectByNumber(yaffs_Device *dev,__u32 number);// Link operationsyaffs_Object *yaffs_Link(yaffs_Object *parent, const char *name, yaffs_Object *equivalentObject);yaffs_Object *yaffs_GetEquivalentObject(yaffs_Object *obj);// Symlink operationsyaffs_Object *yaffs_MknodSymLink(yaffs_Object *parent, const char *name, __u32 mode,  __u32 uid, __u32 gid, const char *alias);char *yaffs_GetSymlinkAlias(yaffs_Object *obj);// Special inodes (fifos, sockets and devices)yaffs_Object *yaffs_MknodSpecial(yaffs_Object *parent,const char *name, __u32 mode, __u32 uid, __u32 gid,__u32 rdev);// Special directoriesyaffs_Object *yaffs_Root(yaffs_Device *dev);yaffs_Object *yaffs_LostNFound(yaffs_Device *dev);#ifdef CONFIG_YAFFS_WINCE// CONFIG_YAFFS_WINCE special stuffvoid  yfsd_WinFileTimeNow(__u32 target[2]);#endif// Debug dump int yaffs_DumpObject(yaffs_Object *obj);void yaffs_GutsTest(yaffs_Device *dev);#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区四区五区视频在线观看| 555夜色666亚洲国产免| 国产午夜亚洲精品理论片色戒| 九色|91porny| 久久网站热最新地址| 国产精品一区二区男女羞羞无遮挡| 国产亚洲欧美日韩日本| 波多野结衣在线aⅴ中文字幕不卡| 国产精品久久三区| 欧美性做爰猛烈叫床潮| 日韩 欧美一区二区三区| 精品国产电影一区二区| 国产福利精品一区二区| 综合婷婷亚洲小说| 欧美一级精品大片| 国产成人午夜高潮毛片| 亚洲精选视频免费看| 欧美人动与zoxxxx乱| 国产一区二区三区电影在线观看| 日本一区二区三区国色天香| 91麻豆swag| 美女网站色91| 中文字幕日韩一区| 欧美精品在线视频| 成人黄色小视频在线观看| 亚洲欧美一区二区三区国产精品| 欧美午夜精品一区二区三区| 另类小说图片综合网| 一区在线观看视频| 欧美日韩高清一区二区不卡| 国模冰冰炮一区二区| 亚洲一区二区三区四区中文字幕| 欧美v亚洲v综合ⅴ国产v| 97se亚洲国产综合自在线观| 日韩精品一二三四| 中文字幕日韩av资源站| 欧美成人三级在线| 色婷婷综合久久| 久久成人免费网站| 亚洲一区二区免费视频| 中文字幕一区二区视频| 日韩欧美的一区二区| 色88888久久久久久影院按摩| 久久99久久99| 亚洲成人自拍一区| 国产精品久久久99| 精品国产乱码久久久久久蜜臀| 欧美性色黄大片| 成人黄色片在线观看| 精品一区二区av| 亚洲444eee在线观看| 亚洲三级在线播放| 亚洲国产激情av| 久久久综合视频| 日韩欧美国产综合| 9191精品国产综合久久久久久| 99re成人精品视频| 粗大黑人巨茎大战欧美成人| 六月丁香综合在线视频| 亚洲午夜电影在线观看| 中文字幕在线观看一区二区| 久久精品在线观看| 日韩美女视频在线| 日韩欧美国产麻豆| 欧美丰满嫩嫩电影| 欧美日韩电影一区| 欧美军同video69gay| 欧美视频你懂的| 欧洲精品视频在线观看| 日本精品一区二区三区高清| 成+人+亚洲+综合天堂| 成人一区二区视频| 风流少妇一区二区| av在线不卡电影| 不卡电影免费在线播放一区| 国产91精品在线观看| 国产精品一区二区久久精品爱涩| 国产真实乱子伦精品视频| 久久精品国产精品亚洲红杏 | 国产不卡在线播放| 国产一区激情在线| 国产成人免费xxxxxxxx| 国产aⅴ综合色| 成人性色生活片免费看爆迷你毛片| 国产精品香蕉一区二区三区| 国产精品18久久久久久久久| 国产成人亚洲综合a∨婷婷图片| 国产成人精品免费看| 成人晚上爱看视频| 日本福利一区二区| 欧美日韩视频一区二区| 日韩欧美成人一区| 国产亚洲一二三区| 亚洲欧美韩国综合色| 五月综合激情日本mⅴ| 免费成人美女在线观看| 国产裸体歌舞团一区二区| 成人一区二区三区中文字幕| 欧洲精品一区二区三区在线观看| 欧美精三区欧美精三区| 国产偷国产偷亚洲高清人白洁 | 国产精品久久久久aaaa| 亚洲男帅同性gay1069| 亚洲一区二区成人在线观看| 日韩高清国产一区在线| 国产精品一线二线三线| 91在线无精精品入口| 欧美日韩国产一级| 久久久久国产精品麻豆ai换脸 | 国产精品网站导航| 亚洲精品国产视频| 老司机午夜精品99久久| av不卡在线观看| 欧美一区二区三区男人的天堂| 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品成人在线观看| 性做久久久久久免费观看| 国精产品一区一区三区mba桃花| 91网站视频在线观看| 欧美乱妇20p| 中文字幕精品—区二区四季| 亚洲成a人片在线观看中文| 韩国精品主播一区二区在线观看 | 天堂av在线一区| 国产经典欧美精品| 欧美日韩午夜影院| 国产精品入口麻豆九色| 日本午夜精品视频在线观看| 99精品视频一区| 久久综合给合久久狠狠狠97色69| 中文字幕一区二区三区精华液| 日韩精品一二区| 91麻豆福利精品推荐| 久久一日本道色综合| 性做久久久久久久免费看| 成人sese在线| 久久综合色婷婷| 欧美aa在线视频| 日本久久电影网| 中文字幕一区二区在线播放| 韩国精品免费视频| 欧美一区二区三区四区五区| 亚洲欧美日韩一区二区三区在线观看| 美女视频黄免费的久久 | 亚洲精选在线视频| 国产丶欧美丶日本不卡视频| 91精品国产综合久久久蜜臀图片| 亚洲三级久久久| 不卡的电影网站| 国产欧美日本一区二区三区| 久久99精品久久久久婷婷| 欧美欧美午夜aⅴ在线观看| 亚洲综合清纯丝袜自拍| 99国产欧美另类久久久精品| 国产网站一区二区| 国产激情视频一区二区三区欧美| 精品国产一区二区三区四区四 | 亚洲日本va午夜在线电影| 国产精品888| 精品国产凹凸成av人网站| 日韩精品电影在线| 欧美美女一区二区三区| 亚洲国产一区二区三区| 99精品偷自拍| 亚洲品质自拍视频| 一本大道久久精品懂色aⅴ| 国产精品国产三级国产普通话99| 国产成人精品免费| 国产精品美女久久久久av爽李琼 | 国产69精品一区二区亚洲孕妇| 精品国产一区二区亚洲人成毛片| 麻豆成人久久精品二区三区红 | 国产99久久久久| 中文字幕第一区| fc2成人免费人成在线观看播放 | 国产欧美一区二区三区鸳鸯浴| 久久国产尿小便嘘嘘尿| 欧美tickle裸体挠脚心vk| 韩国av一区二区三区| 国产亚洲成aⅴ人片在线观看| 国产成人小视频| 亚洲品质自拍视频网站| 欧美伊人精品成人久久综合97 | 91福利在线看| 亚洲国产一二三| 日韩一级黄色片| 国产经典欧美精品| 国产一区二区三区在线观看精品| 欧美岛国在线观看| 国产成人综合视频| 综合av第一页| 欧美精三区欧美精三区| 精品一区二区在线免费观看| 国产欧美日韩综合精品一区二区| 国产盗摄一区二区| 亚洲午夜电影网| 精品国产a毛片| 色欲综合视频天天天| 日本成人中文字幕在线视频| 精品精品欲导航|