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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dosfslib.c

?? vxworks操作系統的文件系統部分原代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
    fd = open ("file", O_RDONLY);    status = ioctl (fd, FIOTIMESET, (int)&newTimeBuf);.CE.iP "FIOCHKDSK"This function invokes the integral consistency checking.During the test, the file system will be blocked from application codeaccess, and will emit messages describing any inconsistencies found onthe disk, as well as some statistics, depending on the verbositylevel in the <flags> argument.Depending on the repair permission value in <flags> argument,the inconsistencies will be repaired, and changes written to diskor only reported.Argument <flags> should be composed of bitwise or-edverbosity level value and repair permission value.Possible repair levels are:.RS.iP "DOS_CHK_ONLY (1)"Only report errors, do not modify disk..iP "DOS_CHK_REPAIR (2)"Repair any errors found..LPPossible verbosity levels are:.iP "DOS_CHK_VERB_SILENT (0xff00)"Do not emit any messages, except errors encountered..iP "DOS_CHK_VERB_1 (0x0100)"Display some volume statistics when done testing, as well.iP "DOS_CHK_VERB_2 (0x0200)"In addition to the above option, display path of every file, while itis being checked. This option may significantly slow down the testprocess..IP "NOTE"In environments with reduced RAM size check disk uses reservedFAT copy as temporary buffer, it can cause respectively longtime of execution on a slow CPU architectures...LP.RESee also the reference manual usrFsLib for the chkdsk() user levelutility which may be used to invoke the FIOCHKDSK ioctl().The volume root directory should be opened, and the resulting filedescriptor should be used:.CS    int fd = open (device_name, O_RDONLY, 0);    status = ioctl (fd, FIOCHKDSK, DOS_CHK_REPAIR | DOS_CHK_VERB_1);    close (fd);.CE.LPAny other ioctl() function codes are passed to the underlying.I CBIOmodules for handling.INCLUDE FILES: dosFsLib.hSEE ALSO:ioLib, iosLib, dirLib, usrFsLib, dcacheCbio, dpartCbio, dosFsFmtLib,dosChkLib.I "Microsoft MS-DOS Programmer's Reference"(Microsoft Press),.I "Advanced MS-DOS Programming"(Ray Duncan, Microsoft Press),.I "VxWorks Programmer's Guide: I/O System, Local File Systems"INTERNAL:Note:  To represent a backslash in documentation use "\e", not "\\".The double backslash sometimes works, but results may be unpredictable.*//* 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 "taskLib.h"#include "tickLib.h"#include "semLib.h"#include "logLib.h"#include "errnoLib.h"#include "memLib.h"#include "utime.h"#include "blkIo.h"#include "private/print64Lib.h"#include "private/dosFsLibP.h"#include "private/dosDirLibP.h"/* defines */#if FALSE#   undef FAT_ALLOC_ONE#   define FAT_ALLOC_ONE        (FAT_ALLOC | 8)#endif /* FALSE *//* 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) <= dosFsDebug )					\	    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) <= dosFsDebug ) 				\            logMsg( __FILE__ " : " fmt, (int)(a1), (int)(a2),	\		  (int)(a3), (int)(a4), (int)(a5), (int)(a6) ); }#endif /* DEBUG */#include "assert.h"#ifdef ERR_SET_SELF#   define errnoSet( err ) errnoSetOut( __FILE__, __LINE__, #err, (err) )#endif /* ERR_SET_SELF *//* typedefs *//* globals */int	dosFsDrvNum = ERROR; /* dosFs number in vxWorks driver table */u_int	dosFsDebug = 1;/* handlers lists */DOS_HDLR_DESC    dosFatHdlrsList[ DOS_MAX_HDLRS ] = {{0}};DOS_HDLR_DESC    dosDirHdlrsList[ DOS_MAX_HDLRS ] = {{0}};STATUS (*dosFsChkRtn)( DOS_FILE_DESC_ID pFd ) = NULL;					/* check disk routine */STATUS (*dosFsVolFormatRtn)( void * pDev, int opt,                             FUNCPTR pPromptFunc ) = NULL;                          		/* volume format routine *//* locals */LOCAL STATUS dosFsRead( FAST DOS_FILE_DESC_ID pFd, char * pBuf,                        int maxBytes );LOCAL STATUS dosFsIoctl ( FAST DOS_FILE_DESC_ID pFd, int function, int arg );LOCAL DOS_FILE_DESC_ID dosFsOpen ( FAST DOS_VOLUME_DESC * pVolDesc,                                  char * pPath, int flags, int mode );LOCAL STATUS dosFsDelete (DOS_VOLUME_DESC_ID pVolDesc, char * pPath);LOCAL STATUS dosFsClose  (DOS_FILE_DESC_ID pFd);LOCAL STATUS dosFsRename (DOS_FILE_DESC_ID    pFdOld, char * pNewName,                          BOOL        allowOverwrite);#ifdef ERR_SET_SELF/******************************************************************************** errnoSetOut - put error message** This routine is called instead of errnoSet during debugging.*/static VOID errnoSetOut(char * pFile, int line, const char * pStr, int errCode )    {    if( errCode != OK && strcmp( str, "errnoBuf" ) != 0 )        printf( " %s : line %d : %s = %p, task %p\n",                pFile, line, pStr, (void *)errCode,                (void *)taskIdSelf() );    errno = errCode;    }#endif  /* ERR_SET_SELF *//********************************************************************************* dosSetVolCaseSens - set case sensitivity of volume** Pass TRUE to setup a case sensitive volume.  * Pass FALSE to setup a case insensitive volume.  * Note this affects rename lookups only.** RETURNS: TRUE if pVolDesc pointed to a DOS volume.*/STATUS dosSetVolCaseSens     (     DOS_VOLUME_DESC_ID pVolDesc,     BOOL sensitivity     )    {    BOOL isValid; /* Validity flag */    /* If the parameter is aligned OK */    if ( TRUE == (isValid = _WRS_ALIGN_CHECK(pVolDesc, DOS_VOLUME_DESC)))        {        /* Aligned parameter, but is it a DOS volume? */        if ( TRUE == (isValid = (pVolDesc->magic == DOS_FS_MAGIC )) )            {            pVolDesc->volIsCaseSens = sensitivity;            }        }    /* Didn't work? Broken parameter then */    if (FALSE == isValid)        {        /* Not a DOS volume or not aligned so that's an invalid parameter */        errnoSet( S_dosFsLib_INVALID_PARAMETER );        }    /* If it was valid it got set. */    return (isValid);    }/********************************************************************************* dosFsIsValHuge - check if value is grater, than 4GB (max 32 bit).** RETURNS: TRUE if is grater, else return FALSE.*/LOCAL BOOL dosFsIsValHuge    (    fsize_t	val    )    {    return DOS_IS_VAL_HUGE( val );    } /* dosFsIsValHuge() *//********************************************************************************* dosFsVolDescGet - convert a device name into a DOS volume descriptor pointer.* * This routine validates <pDevNameOrPVolDesc> to be a DOS volume* descriptor pointer else a path to a DOS device. This routine * uses the standard iosLib function iosDevFind() to obtain a pointer * to the device descriptor. If device is eligible, <ppTail> is * filled with the pointer to the first character following* the device name.  Note that ppTail is passed to iosDevFind().* <ppTail> may be passed as NULL, in which case it is ignored.** RETURNS: A DOS_VOLUME_DESC_ID or NULL if not a DOSFS device.** ERRNO:* S_dosFsLib_INVALID_PARAMETER*/DOS_VOLUME_DESC_ID dosFsVolDescGet    (    void *      pDevNameOrPVolDesc, /* device name or pointer to dos vol desc */    u_char **   ppTail      /* return ptr for name, used in iosDevFind */        )    {    DOS_VOLUME_DESC_ID	pVolDesc;	/* pointer to volume descriptor */    char *      pDevName = (pDevNameOrPVolDesc == NULL) ?    			  "" : pDevNameOrPVolDesc;    u_char *    pNameTail;    if( ppTail == NULL )    	ppTail = &pNameTail;        *ppTail = NULL;        pVolDesc = pDevNameOrPVolDesc;        /* SPR#71720 NULL is presumed to be an invalid value */        if (NULL == pVolDesc)        {        errnoSet( S_dosFsLib_INVALID_PARAMETER );	return (NULL);        }    /* SPR#71720 ensure alignment and then check the magic cookie */    if (TRUE == _WRS_ALIGN_CHECK(pVolDesc, DOS_VOLUME_DESC))        {        if (pVolDesc->magic == DOS_FS_MAGIC )            {    	    return (pVolDesc);            }        }    /* attempt to extract volume descriptor ptr from device name */    #ifdef _WRS_DOSFS2_VXWORKS_AE    pVolDesc =      (DOS_VOLUME_DESC_ID) iosDevFind (pDevName, (const char **)ppTail);#else    pVolDesc =      (DOS_VOLUME_DESC_ID) iosDevFind (pDevName, (char **) ppTail);#endif /* _WRS_DOSFS2_VXWORKS_AE */    /*      * SPR#76510, if iosDevFind() returned default device,     * then the tail (ppTail) will point to the front of     * the passed name and that is considered a lookup failure.     */    if ((NULL == pVolDesc) || ((char *) *ppTail == pDevName))        {        errnoSet( S_dosFsLib_INVALID_PARAMETER );	return (NULL);        }    /* SPR#71720 ensure alignment and then check the magic cookie */    if (TRUE == _WRS_ALIGN_CHECK(pVolDesc, DOS_VOLUME_DESC))        {        if (pVolDesc->magic == DOS_FS_MAGIC )            {    	    return (pVolDesc);            }        }        errnoSet( S_dosFsLib_INVALID_PARAMETER );     return (NULL);    } /* dosFsVolDescGet() *//********************************************************************************* dosFsFSemTake - take file semaphore.** RETURNS: STATUS as result of semTake.*/LOCAL STATUS dosFsFSemTake    (    DOS_FILE_DESC_ID	pFd,    int			timeout    )    {    STATUS retStat;    assert( pFd - pFd->pVolDesc->pFdList < pFd->pVolDesc->maxFiles );    assert( pFd->pFileHdl - pFd->pVolDesc->pFhdlList <            pFd->pVolDesc->maxFiles );    retStat =  semTake( *(pFd->pVolDesc->pFsemList +     		        (pFd->pFileHdl - pFd->pVolDesc->pFhdlList)),                        timeout);    assert( retStat == OK );    return retStat;    } /* dosFsFSemTake() */    /********************************************************************************* dosFsFSemGive - release file semaphore.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天影视网天天综合色在线播放| 久久一日本道色综合| 亚洲精品免费在线观看| 波波电影院一区二区三区| 国产精品亲子乱子伦xxxx裸| 成人一区二区在线观看| 亚洲天堂久久久久久久| 色菇凉天天综合网| 亚洲一区视频在线| 日韩精品最新网址| 国产乱对白刺激视频不卡| 国产欧美一区二区三区网站| av一二三不卡影片| 亚洲成av人片在线观看| 欧美一区二区在线播放| 国产毛片精品一区| 日韩一区有码在线| 在线影院国内精品| 九一九一国产精品| 国产精品你懂的在线| 欧洲av在线精品| 美女www一区二区| 国产精品第四页| 欧美三级午夜理伦三级中视频| 日韩国产成人精品| 欧美国产在线观看| 精品视频123区在线观看| 精品一区二区久久久| 中文字幕一区二区三区不卡在线| 欧美性色综合网| 国产精品一区二区不卡| 亚洲男女毛片无遮挡| 91精品欧美综合在线观看最新 | 日韩欧美专区在线| 成人丝袜18视频在线观看| 亚洲成人一区二区在线观看| xf在线a精品一区二区视频网站| 99国产精品久| 另类成人小视频在线| 亚洲色图欧美激情| 久久影视一区二区| 欧美卡1卡2卡| 91亚洲永久精品| 经典一区二区三区| 午夜精品福利一区二区蜜股av| 日本一区二区视频在线观看| 欧美精品亚洲一区二区在线播放| 成人黄色免费短视频| 免费不卡在线观看| 午夜视频在线观看一区二区| **性色生活片久久毛片| 久久女同性恋中文字幕| 91精品国产欧美日韩| 99re热这里只有精品视频| 国产毛片精品视频| 老司机精品视频线观看86| 亚洲一级二级三级在线免费观看| 久久精品亚洲一区二区三区浴池| 91 com成人网| 欧美日韩精品系列| 欧洲精品中文字幕| 色综合激情久久| 成人黄色在线网站| 国产福利91精品一区二区三区| 青青草国产成人av片免费| 亚洲高清免费在线| 一区二区三区视频在线观看 | 亚洲日本护士毛茸茸| 久久亚洲精品小早川怜子| 6080日韩午夜伦伦午夜伦| 欧美性猛交xxxxxx富婆| 欧美亚洲国产一区在线观看网站 | 久久品道一品道久久精品| 欧美成人乱码一区二区三区| 欧美一区二区三区影视| 欧美一区二区日韩一区二区| 91精品婷婷国产综合久久竹菊| 欧美女孩性生活视频| 欧美精品在线一区二区三区| 欧美日韩一区 二区 三区 久久精品| 色先锋资源久久综合| 一本到不卡精品视频在线观看| 一本久久a久久免费精品不卡| 91在线云播放| 欧美日韩免费电影| 91精品久久久久久久99蜜桃| 51精品视频一区二区三区| 91视频一区二区三区| 国产精选一区二区三区| 成人性生交大片免费看中文| 国产美女av一区二区三区| 久久不见久久见中文字幕免费| 五月天精品一区二区三区| 亚洲午夜激情av| 久久66热re国产| 精品一区二区三区免费视频| 六月丁香婷婷色狠狠久久| 奇米888四色在线精品| 首页亚洲欧美制服丝腿| 亚洲成人精品一区二区| 日韩理论片中文av| 丝袜a∨在线一区二区三区不卡| 亚洲最新视频在线播放| 一区二区高清免费观看影视大全| 亚洲综合精品自拍| 亚洲图片欧美视频| 日韩在线a电影| 无码av中文一区二区三区桃花岛| 亚洲chinese男男1069| 亚洲va韩国va欧美va| 免费在线一区观看| 国产做a爰片久久毛片 | 蜜臀99久久精品久久久久久软件| 免费av网站大全久久| 国产一区二区三区高清播放| 国内外成人在线视频| 91污片在线观看| 欧美三级视频在线播放| 日韩写真欧美这视频| 久久久久久久综合狠狠综合| 国产女主播一区| 国产女主播视频一区二区| 亚洲国产美国国产综合一区二区| 肉丝袜脚交视频一区二区| 国产毛片一区二区| 日本久久电影网| 欧美一区二区性放荡片| 亚洲欧美韩国综合色| 丝袜脚交一区二区| 国产成人精品aa毛片| 欧洲生活片亚洲生活在线观看| 91精品国产综合久久福利软件| 91精品国产乱码| 一区二区三区欧美| 激情伊人五月天久久综合| 99精品视频在线观看免费| 制服丝袜日韩国产| 欧美极品aⅴ影院| 亚洲人成在线观看一区二区| 国产裸体歌舞团一区二区| 日本国产一区二区| 欧美xxxxx裸体时装秀| 亚洲美女视频在线观看| 久久99久久99精品免视看婷婷| 91成人免费电影| 日本一区二区在线不卡| 五月激情综合色| a级高清视频欧美日韩| 日韩色在线观看| 中日韩av电影| 国产成a人亚洲| 欧美一区二区三区视频在线| 中文字幕第一区第二区| 日本三级韩国三级欧美三级| 99re成人精品视频| 欧美日韩免费不卡视频一区二区三区| 国产日韩欧美制服另类| 日本vs亚洲vs韩国一区三区| 91碰在线视频| 日本一区二区电影| 激情综合网天天干| 91精品在线麻豆| 亚洲国产精品视频| 99久久精品国产一区二区三区 | 久久日韩粉嫩一区二区三区| 日本成人在线电影网| 一本大道久久精品懂色aⅴ| 久久久久综合网| 久久精品国产成人一区二区三区| 色综合色综合色综合色综合色综合| 欧美tickling网站挠脚心| 久久99在线观看| 日韩欧美国产电影| 午夜av一区二区| 欧美日韩另类国产亚洲欧美一级| 亚洲国产精品高清| 91亚洲国产成人精品一区二三 | 国产精品久久久久精k8| 国产精一区二区三区| 久久久亚洲综合| 国产在线播放一区二区三区| 欧美激情在线看| 国产成人激情av| 亚洲国产高清aⅴ视频| 国产在线一区二区| 日韩视频永久免费| 福利电影一区二区| 国产精品免费视频一区| 高清在线成人网| 国产精品色哟哟| 97久久精品人人做人人爽50路| 最新日韩在线视频| 91免费在线播放| 樱花影视一区二区| 欧亚洲嫩模精品一区三区| 蜜臀av一区二区在线免费观看| 日韩免费电影网站| 国产精品一区二区不卡| 国产精品拍天天在线| 555www色欧美视频|