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

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

?? doschklib.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
/* dosChkLib.c - DOS file system sanity check utility */ /* Copyright 1999-2002 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01o,10nov01,jkf  SPR#67890, chkdsk writes to RDONLY device01n,18oct01,jkf   warning cleaning.01n,18sep00,nrj   Fixed SPR#34108, check the write mode before synchronzing the                  FAT01m,29feb00,jkf   T3 changes01l,31aug99,jkf   changes for new CBIO API.  Changed date check logic.                  Added docs for date check.  Added global for date                  check.  Default debug global to zero.01k,31jul99,jkf   T2 merge, tidiness & spelling.01j,28sep98,vld   gnu extensions dropped from DBG_MSG/ERR_MSG macros01i,13oct98,vld   fixed message positioning on  screen, - '\b' avoided.01h,23sep98,vld   added usage of reserved FAT32 copy for data buffering		  in reduced memory environments, bit map of FAT entries		  is filled in parallel with 4-byte MAP array in this case01g,23sep98,vld   fixed bug of backward time setting01f,23sep98,vld   disable FAT mirroring while check disk in progress;		  synchronize FAT copies after check disk.01e,17sep98,vld   FAT copy number argument added to calls of		  clustValueSet()/clustValueGet();01d,08jul98,vld   print64Lib.h moved to h/private directory.01c,08jul98,vld   fixed bug in dosFsChkTree() of deletion		  invalid name entry through other file descriptor.01b,02jul98,lrn   review doc and messages01a,18jan98,vld	  written, preliminary*//*DESCRIPTIONThis library is part of dosFsLib, it manages the Consistency Checkingprocedure, which may be invoked automatically during device mountprocedure, or manual by means of the FIOCHKDSK ioctl.be checked which is managed by that particular handler.Check disk requires temporary buffer large enough to store informationon every FAT entry. Memory requirements can be a problem for FAT32volumes. If no enough available, temporary data is buffered insecond (reserved) FAT copy, that can take extremely long time on a slow processors.The minimum acceptable system time & date is set by the global variable(time_t) dosChkMinDate.  If the system time is greater than that value, it is assumed that a hardware clock mechanism is in place and the time setting is honored.  If dosChkLib detects that the system is set to an earlier date than dosChkMinDate, the system date will be adjusted to either the most recent date found on the file system volume or the minimum acceptable system time & date, whichever is later.  A warning indicicating the new system time is displayed on the console when this occurs.Do not set dosChkMinDate prior to 1980!INTERNAL*//* includes */#include "vxWorks.h"#include "private/dosFsVerP.h"#include "stat.h"#include "time.h"#include "dirent.h"#include "stdio.h"#include "stdlib.h"#include "string.h"#include "errnoLib.h"#include "memLib.h"#include "taskLib.h"#include "time.h"#include "timers.h"#include "tickLib.h"#include "dosFsLib.h"#include "private/print64Lib.h"#include "private/dosFsLibP.h"/* defines *//* macros */#undef DBG_MSG#undef ERR_MSG#undef NDEBUG#ifdef DEBUG#   undef LOCAL#   define LOCAL#   undef ERR_SET_SELF#   define ERR_SET_SELF#   define DBG_MSG( lvl, fmt, arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8 )	\	{ if( (lvl) <= dosChkDebug )					\	    printErr( "%s : %d : " fmt,				\	               __FILE__, __LINE__, arg1,arg2,	\		       arg3,arg4,arg5,arg6,arg7,arg8 ); }#   define ERR_MSG( lvl, fmt, a1,a2,a3,a4,a5,a6 )		\        { logMsg( __FILE__ " : " fmt, (int)(a1), (int)(a2),	\		  (int)(a3), (int)(a4), (int)(a5), (int)(a6) ); }#else	/* NO DEBUG */#   define NDEBUG#   define DBG_MSG(lvl,fmt,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) 	{}#   define ERR_MSG( lvl, fmt, a1,a2,a3,a4,a5,a6 )		\	{ if( (lvl) <= dosChkDebug ) 				\            logMsg( __FILE__ " : " fmt, (int)(a1), (int)(a2),	\		  (int)(a3), (int)(a4), (int)(a5), (int)(a6) ); }#endif /* DEBUG */#include "assert.h"#define DOSCHKLIB_YEAR_VALUE (((60*60)*24)*365*21)int dosChkDebug = 0;time_t dosChkMinDate = (time_t) DOSCHKLIB_YEAR_VALUE;/* error messages */#define CHK_CROSS_L_START_MSG	"\"%s\" is cross-linked on first cluster. "#define CHK_START_MSG		"%s  - disk check in progress ..."#define CHK_NOT_ROOM_MSG	"%s - Not enough room to run check disk.\n"#define CHK_LOST_CHAINS_MSG	" - lost chains "#define CHK_DEL_MSG		" Entry will be deleted. "#define CHK_REMAIN_MSG		"Entry remains intact. "#define CHK_CLUST_VAL		"(cluster %lu, value %lu)."#define CHK_SHORT_CHAIN_MSG	"\"%s\" file larger then its chain of clusters"#define CHK_BAD_DIR_MSG		"\"%s\" directory has invalid structure."#define CHK_DIR_LVL_OVERFL "directory nesting limit reached, \"%s\" skipped"#define CHK_ROOT_CHAIN	 "%s - Root directory cluster chain is corrupted.\n"#define CHK_ROOT_TRUNC_MSG	"      Root directory truncated. \n"#define CHK_BAD_NAME		"\"%s\" is an illegal name. "#define CHK_FAIL_MSG		"     Check disk failed. \n"\                                "     Disk should be formatted.\n"#define CHK_NOT_REPAIRED	"%s  - Errors detected. "\				"To correct disk structure, please start "\				"check disk with a permission to repair."#define CHK_RESTORE_FREE	"Errors detected. "\				"All corrections stored to disk "\				"and lost chains recovered."#define CHK_BAD_START_MSG	"\"%s\" has illegal start cluster"#define CHK_CROSS_START_MSG	"\"%s\" cross-linked at start"#define CHK_BAD_CHAIN_MSG	"\"%s\" has illegal cluster in chain"#define CHK_CROSS_LINK_MSG	"\"%s\" cross-linked with another chain"#define CHK_LONG_CHAIN_MSG	"\"%s\" too many clusters in file, adjusted."#define CHK_BAD_CLUST_MSG	"illegal cluster"#define CHK_NO_ERRORS		"%s  - Volume is OK "#define START_CLUST_MASK	0x80000000#define LOST_CHAIN_MARK		0xc0000000#define MARK_SET	1#define MARK_GET	2#define IS_BUSY		3#define MARK_BUF_INIT	255/* typedefs *//* check disk status */ typedef enum {             CHK_OK=OK, CHK_SIZE_ERROR,             CHK_RESTART, CHK_BAD_DIR, CHK_BAD_FILE,             CHK_CROSS_LINK, CHK_BAD_CHAIN, CHK_BAD_START,             CHK_ERROR=ERROR             }  CHK_STATUS;        /* dosChkMsg() argument */typedef enum { CURRENT_PATH, GET_PATH }	MSG_PATH;/* dosChkEntryFind() argument */typedef enum { FIND_BY_CLUST, FIND_BY_NAME }	CHK_SEARCH_KEY_TYPE;/* globals *//* locals *//* forward declarations */LOCAL void dosChkChainUnmark    (    DOS_FILE_DESC_ID    pFd             /* pointer to file descriptor */    );LOCAL STATUS dosChkChainStartGet    (    DOS_FILE_DESC_ID    pFd,            /* pointer to file descriptor */    uint32_t            entNum,    uint32_t *          pParDirStartClust,    uint32_t *          pStartClust    );LOCAL CHK_STATUS dosChkChainVerify    (    DOS_FILE_DESC_ID    pFd            /* pointer to file descriptor */    );LOCAL STATUS dosChkLostFind    (    DOS_FILE_DESC_ID    pFd             /* pointer to file descriptor */    );LOCAL STATUS dosChkLostFree    (    DOS_FILE_DESC_ID    pFd             /* pointer to file descriptor */    );/********************************************************************************* dosChkStatPrint - print statistics.** RETURNS: N/A.*/LOCAL void dosChkStatPrint    (    DOS_FILE_DESC_ID	pFd    )    {    DOS_VOLUME_DESC_ID	pVolDesc = pFd->pVolDesc;    CHK_DSK_DESC_ID	pChkDesc = pFd->pVolDesc->pChkDesc;    fsize_t	valBuf;        if( pVolDesc->chkVerbLevel < (DOS_CHK_VERB_1 >> 8) )    	return;        /* print statistics */        print64Fine(  "\n" "	  total # of clusters:	", 	pVolDesc->nFatEnts, "\n", 10 );    print64Fine( "	   # of free clusters:	", 	pChkDesc->chkNFreeClusts, "\n", 10 );    print64Fine( "	    # of bad clusters:	", 	pChkDesc->chkNBadClusts, "\n", 10 );        valBuf = pChkDesc->chkNFreeClusts;    valBuf = ( valBuf * pVolDesc->secPerClust ) <<    	     pVolDesc->secSizeShift;    print64Mult( "	     total free space:	",	valBuf, "\n", 10 );        valBuf = (fsize_t)pVolDesc->pFatDesc->maxContig( pFd ) <<     	     pVolDesc->secSizeShift;    print64Fine( "     max contiguous free space:  ",	valBuf, " bytes\n", 10 );    print64Fine( "		   # of files:	",	pChkDesc->chkNFiles, "\n", 10 );    print64Fine( "		 # of folders:	",	pChkDesc->chkNDirs, "\n", 10 );    print64Mult( "	 total bytes in files:	",	pChkDesc->chkTotalFSize, "\n", 10 );    print64Fine( "	     # of lost chains:	",	pChkDesc->chkNLostChains, "\n", 10 );    print64Mult( "   total bytes in lost chains:  ",	      pChkDesc->chkTotalBytesInLostChains, "\n", 10 );    }    /********************************************************************************* dosChkFinish - print statistics and deallocate resources.** RETURNS: N/A.*/LOCAL void dosChkFinish    (    DOS_FILE_DESC_ID	pFd    )    {    if( pFd->pVolDesc->pChkDesc->chkFatMap != NULL )    	KHEAP_FREE(((char *)pFd->pVolDesc->pChkDesc->chkFatMap));    KHEAP_FREE(((char *)pFd->pVolDesc->pChkDesc));    pFd->pVolDesc->pChkDesc = NULL;        return;    } /* dosChkFinish() */    /********************************************************************************* dosChkEntryMark - set/get FAT entry marker.** RETURNS: marker value on MARK_GET operation, STATUS on MARK_SET*  and MARK_BUF_INIT operation.*/uint32_t dosChkEntryMark    (    DOS_FILE_DESC_ID	pFd,    u_int	operation,         /* MARK_SET/MARK_GET/MARK_BUF_INIT */    uint32_t	entryNum,    uint32_t	mark    )    {    DOS_VOLUME_DESC_ID	pVolDesc = pFd->pVolDesc;    CHK_DSK_DESC_ID	pChkDesc = pVolDesc->pChkDesc;    uint8_t	fatCopyNum = 0;    if (! pChkDesc->bufToDisk)    	{    	switch (operation)    	    {    	    case MARK_GET :    	    case IS_BUSY :    	    	return pChkDesc->chkFatMap [entryNum];    	    case MARK_SET :    	    	pChkDesc->chkFatMap [entryNum] = mark;    	    	break;    	    case MARK_BUF_INIT :    	    	bzero ((char *)pChkDesc->chkFatMap,   	   	       pVolDesc->nFatEnts *                       sizeof( *pVolDesc->pChkDesc->chkFatMap ));    	    	break;    	    default:    	    	assert (FALSE);    	    }      	return OK;    	}    else	/* use reserved FAT copy as buffer */    	{    	fatCopyNum = pVolDesc->pFatDesc->activeCopyNum + 1;    	switch (operation)    	    {    	    case MARK_GET :            	pVolDesc->pFatDesc->clustValueGet (pFd, fatCopyNum,						   entryNum, &mark );    	    	return mark;    	    case IS_BUSY :    	    	return pChkDesc->chkFatMap [                       entryNum / 8 / sizeof(*pChkDesc->chkFatMap)] &                       (1 <<                        (entryNum & (sizeof(*pChkDesc->chkFatMap) * 8 - 1)));    	    case MARK_SET :    	    	pChkDesc->chkFatMap [			entryNum / 8 / sizeof(*pChkDesc->chkFatMap)] |=	        1 << (entryNum & (sizeof(*pChkDesc->chkFatMap) * 8 - 1));            	return pVolDesc->pFatDesc->clustValueSet (			    pFd, fatCopyNum, entryNum, DOS_FAT_RAW, mark );    	    case MARK_BUF_INIT :    	    	bzero ((char *)pChkDesc->chkFatMap,                       pVolDesc->nFatEnts / 8  + 4);    	    	return pVolDesc->pFatDesc->clustValueSet(                            pFd, fatCopyNum, 0, DOS_FAT_SET_ALL,  0 );    	    default:    	    	assert (FALSE);    	    }    	}    return ERROR;    } /* dosChkEntryMark() *//********************************************************************************* dosChkEntryFind - find entry in directory.** This routine searches directory, that starts from <dirStartClust>,* for entry, by entry name or start cluster. File descriptor* <pFd> is filled for entry found and entry name is placed into* <pChkDesc->chkDir>.** RETURNS: OK or ERROR if disk access error.*/LOCAL STATUS dosChkEntryFind    (    DOS_FILE_DESC_ID	pFd,    UINT32	dirStartClust,    void *	key,	/* start clust value or name buffer */    CHK_SEARCH_KEY_TYPE	keyType    )    {    UINT32	startClust = (UINT32)key;    DIR *	pDir = &pFd->pVolDesc->pChkDesc->chkDir;    DOS_FILE_DESC	fd;    DOS_FILE_HDL	flHdl;        fd = *pFd;    flHdl = *pFd->pFileHdl;    fd.pFileHdl = &flHdl;        if( dirStartClust == 0 )	/* parent is root */    	{    	if( pFd->pVolDesc->pDirDesc->pathLkup( &fd, "", 0 ) == ERROR )    	    return ERROR;    	}    else if( dirStartClust == (UINT32)NONE ) /* search for root */    	{    	if( pFd->pVolDesc->pDirDesc->pathLkup( &fd, "", 0 ) == ERROR )    	    return ERROR;    	strcpy( pDir->dd_dirent.d_name, pFd->pVolDesc->devHdr.name );    	return OK;    	}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青草97国产精品免费观看| 午夜视频在线观看一区二区 | 国产网站一区二区| 色综合天天在线| 经典三级在线一区| 一区二区三区中文字幕在线观看| 精品国产精品一区二区夜夜嗨| 色婷婷综合激情| 国产99久久久精品| 免费xxxx性欧美18vr| 一区二区三区免费在线观看| 久久精品视频一区二区三区| 日韩免费福利电影在线观看| 在线观看91精品国产入口| 高清国产一区二区| 久久99久久99小草精品免视看| 亚洲一区二区三区影院| 国产精品久久久一本精品| 26uuu亚洲综合色| 欧美一级一区二区| 欧美日韩一区成人| 欧美午夜电影网| 日本韩国欧美一区| 日本韩国一区二区三区| 91丨九色丨国产丨porny| 高清日韩电视剧大全免费| 国产精品正在播放| 国产精品中文字幕一区二区三区| 激情伊人五月天久久综合| 蜜桃传媒麻豆第一区在线观看| 亚洲国产一区在线观看| 亚洲国产成人av| 亚洲电影一区二区三区| 亚洲福利一区二区| 午夜视黄欧洲亚洲| 亚洲123区在线观看| 亚洲国产一区二区三区青草影视| 一级日本不卡的影视| 亚洲最新视频在线观看| 一区二区三区中文字幕在线观看| 亚洲免费观看高清| 一区二区三区精品视频在线| 亚洲最大色网站| 午夜成人免费电影| 免费成人在线网站| 国产一区二区久久| 国产成人午夜视频| 不卡av电影在线播放| 91麻豆国产在线观看| 欧亚一区二区三区| 欧美精品一二三区| 日韩欧美一级二级三级久久久| 日韩一区二区三区观看| 欧美大白屁股肥臀xxxxxx| 精品毛片乱码1区2区3区| 久久久久国产精品麻豆ai换脸| 国产精品无圣光一区二区| 亚洲欧洲三级电影| 亚洲午夜影视影院在线观看| 亚洲成va人在线观看| 美日韩一级片在线观看| 国产精品一二三四| 不卡高清视频专区| 欧美性xxxxxx少妇| 日韩欧美国产午夜精品| 久久久777精品电影网影网| 中文字幕不卡在线观看| 亚洲欧美激情小说另类| 午夜天堂影视香蕉久久| 韩国精品主播一区二区在线观看 | 亚洲少妇中出一区| 天天色天天操综合| 久久不见久久见免费视频1| 成人av网站在线观看免费| 欧美在线视频不卡| 精品噜噜噜噜久久久久久久久试看 | 黄网站免费久久| 91免费观看国产| 欧美电影免费观看高清完整版在| 国产精品成人免费在线| 日韩中文字幕1| www.亚洲在线| 日韩精品一区二区三区中文不卡| 在线亚洲人成电影网站色www| 中文字幕一区二区三区在线不卡 | 亚洲美女在线一区| 91网站最新网址| 国产美女主播视频一区| 亚洲一区自拍偷拍| 中文字幕精品一区二区精品绿巨人 | 精品一区二区三区在线观看| 亚洲美女区一区| 国产亚洲人成网站| 日韩免费看的电影| 欧美日本在线视频| 色屁屁一区二区| 成人久久久精品乱码一区二区三区| 久久66热偷产精品| 日韩精品一区第一页| 亚洲精品一二三| 亚洲免费观看在线观看| 中文字幕一区免费在线观看| 欧美激情一区三区| 久久综合九色综合97_久久久| 欧美一区二区三区四区在线观看| 在线影视一区二区三区| 91亚洲精品久久久蜜桃网站 | 极品瑜伽女神91| 婷婷久久综合九色综合绿巨人| 亚洲男人天堂一区| 亚洲女同ⅹxx女同tv| 亚洲人一二三区| 亚洲精品美腿丝袜| 亚洲男人都懂的| 亚洲自拍都市欧美小说| 亚洲一二三区不卡| 日韩国产欧美在线播放| 日韩高清一区在线| 麻豆成人久久精品二区三区小说| 日本三级亚洲精品| 狂野欧美性猛交blacked| 久久精品国产亚洲aⅴ| 裸体歌舞表演一区二区| 国产精品一色哟哟哟| 国产超碰在线一区| 播五月开心婷婷综合| 在线欧美一区二区| 日韩一区二区在线观看视频| 日韩免费观看高清完整版在线观看| 精品欧美一区二区三区精品久久| 久久夜色精品国产欧美乱极品| 日本一区免费视频| 中文字幕一区二区三中文字幕| 一区二区激情视频| 全国精品久久少妇| 国产成人精品一区二区三区四区 | 777xxx欧美| 久久精品视频一区| 亚洲乱码国产乱码精品精小说 | 成人涩涩免费视频| 在线观看av不卡| 欧美成人国产一区二区| 欧美激情一区二区三区四区| 亚洲欧美激情在线| 美国av一区二区| aaa亚洲精品| 欧美一区二区视频在线观看2020 | 51久久夜色精品国产麻豆| 久久久www成人免费毛片麻豆 | 欧美在线一区二区三区| 777a∨成人精品桃花网| 国产精品拍天天在线| 亚洲一二三四在线| 国产成人综合在线播放| 欧美制服丝袜第一页| 久久网站热最新地址| 亚洲一线二线三线视频| 国产激情一区二区三区四区| 欧美性xxxxx极品少妇| 国产日韩欧美不卡在线| 日韩精品高清不卡| 99久久久无码国产精品| 日韩一二三区不卡| 亚洲美女免费视频| 丁香婷婷综合色啪| 日韩一级视频免费观看在线| 综合在线观看色| 久草热8精品视频在线观看| 色综合久久综合网| 国产视频一区在线播放| 日本视频在线一区| 欧美体内she精高潮| 18欧美乱大交hd1984| 国内久久精品视频| 日韩欧美视频在线| 亚洲国产美女搞黄色| 99久久久国产精品免费蜜臀| 久久综合久久99| 日本亚洲电影天堂| 欧美色老头old∨ideo| 亚洲视频在线观看一区| 国产一区二区精品久久| 欧美电影免费观看高清完整版在线 | 亚洲最大成人综合| 99久久久久久| 日本一区二区动态图| 国产成人免费网站| 欧美精品一区二区三区在线播放| 天天影视网天天综合色在线播放| 在线观看av不卡| 亚洲国产日韩综合久久精品| 一本久久a久久免费精品不卡| 中文av字幕一区| 成人小视频在线| 国产精品乱码一区二区三区软件| 国产精品一品二品| 国产日产亚洲精品系列| 国产91在线观看| 国产精品色婷婷久久58| 成人白浆超碰人人人人|