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

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

?? dosfsfat.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
    /* Free a chain of clusters */    while ((curClust >= DOS_MIN_CLUST) && (curClust < pFatDesc->nFatEnts))        {        /* get next cluster in chain */        nextClust = ENTRY_READ (pFd, pFatDesc->dosFatDesc.activeCopyNum,                                curClust);        /* free current cluster (mark cluster in FAT as available) */        if (ENTRY_WRITE (pFd, pFatDesc->dosFatDesc.activeCopyNum,                         curClust, pFatDesc->dos_fat_avail) != OK)            return ERROR;        /* Update free clusters counter */        pFatDesc->fatEntFreeCnt++;        curClust = nextClust;			/* do next cluster */        }    if (curClust <= pFatDesc->dos_fat_bad)	/* If not end of file */        return ERROR;    return OK;    } /* fat16Truncate *//********************************************************************************* fat16Seek - seek cluster within file chain** Returns a particular cluster relative to the cluster chain beginning* which is noted in the file descriptor structure.* It is used to seek in to a file.** RETURNS: requested position is returned in the file descriptor structure*/LOCAL STATUS fat16Seek    (    FAST DOS_FILE_DESC_ID pFd,		/* pointer to file descriptor */    FAST uint32_t		sector,		/* sector to seek from */    FAST uint32_t		sectOff		/* sector offset within file */    )    {    FAST DOS_VOLUME_DESC_ID	pVolDesc = pFd->pVolDesc;					/* pointer to volume descriptor */    FAST MS_FAT_DESC_ID	pFatDesc = (void *) pVolDesc->pFatDesc;						/* pointer to FAT descriptor */    FAST uint32_t		nextClust;	/* next cluster number */    FAST uint32_t		count;		/* count of clusters */    FAST uint32_t		cluster;	/* cluster to seek from */    FAST uint32_t		clustOff;	/*  */    if (sector == FH_FILE_START)        {        pFd->fatHdl.nextClust  = 0;        pFd->fatHdl.lastClust  = 0;        pFd->fatHdl.cbioCookie = 0;        pFd->curSec = 0;        pFd->nSec   = 0;        cluster = pFd->pFileHdl->startClust;        if (cluster == 0)            return OK;        if (cluster < DOS_MIN_CLUST)            return ERROR;        }    else        {        if (sector < pVolDesc->dataStartSec)            return ERROR;        /* cluster to seek from */        cluster = SEC_TO_CLUST (pVolDesc, sector);        /* offset from start of cluster */        sectOff += (sector - pVolDesc->dataStartSec) % pVolDesc->secPerClust;        }    if (cluster >= pFatDesc->nFatEnts)        return ERROR;    clustOff = sectOff / pVolDesc->secPerClust;    sectOff %= pVolDesc->secPerClust;    /* Skip contiguous area */    if ( (cluster < pFd->pFileHdl->contigEndPlus1) &&          (cluster >= pFd->pFileHdl->startClust) )        {        count = min (clustOff, pFd->pFileHdl->contigEndPlus1 - cluster - 1);        cluster += count;        clustOff -= count;        }    for (count = 0; count < clustOff; count++)        {        nextClust = ENTRY_READ (pFd, pFatDesc->dosFatDesc.activeCopyNum,                                cluster);	/* follow chain */        /* If end of cluster chain, bad cluster number or disk access error */        if ((nextClust < DOS_MIN_CLUST) || (nextClust >= pFatDesc->nFatEnts))            return ERROR;        cluster = nextClust;			/* do next cluster */        }    pFd->fatHdl.nextClust = cluster;    if (fat16ContigGet (pFd, pFatDesc->fatGroupSize) != OK)        return ERROR;    pFd->curSec += sectOff;    pFd->nSec   -= sectOff;    return OK;    } /* fat16Seek *//********************************************************************************* fat16NFree - count number of free bytes on disk*** RETURNS: amount of free space is returned in file descriptor handle*/LOCAL fsize_t fat16NFree    (    FAST DOS_FILE_DESC_ID	pFd	/* pointer to file descriptor */    )    {    FAST DOS_VOLUME_DESC_ID	pVolDesc = pFd->pVolDesc;					/* pointer to volume descriptor */    FAST MS_FAT_DESC_ID	pFatDesc = (void *) pVolDesc->pFatDesc;						/* pointer to FAT descriptor */    FAST uint32_t		clustNum;	/* cluster number */    FAST uint32_t		fatEntry;	/*  */    FAST uint32_t		freeCount;	/*  */    freeCount = pFatDesc->fatEntFreeCnt;    if(freeCount == 0xffffffff)        {        freeCount = 0;        /* Read file allocation table (FAT) to find unused clusters */        for (clustNum=DOS_MIN_CLUST; clustNum < pFatDesc->nFatEnts; clustNum++)            {            fatEntry = ENTRY_READ (pFd, pFatDesc->dosFatDesc.activeCopyNum,                                   clustNum);            if ((fatEntry == FAT_CBIO_ERR)&&                (pFd->fatHdl.errCode == FAT_CBIO_ERR))                return ERROR;            if (fatEntry == pFatDesc->dos_fat_avail)                freeCount++;            }        pFatDesc->fatEntFreeCnt = freeCount;        }    return ( (((fsize_t)freeCount) * pVolDesc->secPerClust) <<              pVolDesc->secSizeShift );    } /* fat16NFree *//********************************************************************************* fat16ContigChk - check file chain for contiguity** RETURNS: ERROR if an illegal cluster number is encountered*/LOCAL STATUS fat16ContigChk    (    FAST DOS_FILE_DESC_ID	pFd	/* pointer to file descriptor */    )    {    FAST DOS_FILE_HDL_ID	pFileHdl = pFd->pFileHdl;					/* pointer to file handle */    FAST MS_FAT_DESC_ID	pFatDesc = (void *) pFd->pVolDesc->pFatDesc;					/* pointer to FAT handler descriptor */    FAST uint32_t		nextClust;	/* next cluster number */    FAST uint32_t		cluster;	/* cluster number */    cluster = pFileHdl->startClust;    if (cluster == 0)        return OK;    if ((cluster < DOS_MIN_CLUST) || (cluster >= pFatDesc->nFatEnts))        {        errnoSet (S_dosFsLib_ILLEGAL_CLUSTER_NUMBER);        return ERROR;        }    FOREVER        {        nextClust = ENTRY_READ (pFd, pFatDesc->dosFatDesc.activeCopyNum,                                cluster);	/* follow chain */        if (nextClust != ++cluster)            break;				/* end of contiguous area */        }    if (pFd->fatHdl.errCode == FAT_CBIO_ERR)        return ERROR;    pFileHdl->contigEndPlus1 = cluster;    if (nextClust > pFatDesc->dos_fat_bad)	/* end of file chain */        return OK;    if ((nextClust < DOS_MIN_CLUST) || (nextClust >= pFatDesc->nFatEnts))	{        errnoSet (S_dosFsLib_ILLEGAL_CLUSTER_NUMBER);	}    return ERROR;    } /* fat16ContigChk *//********************************************************************************* fat16MaxContigClustersGet - return size of largest contiguous space on disk* * RETURNS: max contiguous space in clusters*/  LOCAL size_t fat16MaxContigClustersGet    (    FAST DOS_FILE_DESC_ID	pFd,		/* pointer to file descriptor */    FAST uint32_t *		pMaxStart	/* were to return start clust */    )    {    FAST MS_FAT_DESC_ID	pFatDesc = (void *) pFd->pVolDesc->pFatDesc;					/* pointer to FAT handler descriptor */    FAST uint32_t		fatEntry;	/*  */    FAST uint32_t		curClust;	/*  */    FAST uint32_t		firstContig;	/* 1st clust. of contig area */    FAST uint32_t		contigCount;	/* count of fit clusters */    FAST uint32_t		maxStart;	/*  */    FAST uint32_t		maxCount;	/*  */    firstContig = DOS_MIN_CLUST;    contigCount = 0;    maxStart    = 0;    maxCount    = 0;    for (curClust = DOS_MIN_CLUST; curClust < pFatDesc->nFatEnts; curClust++)        {        fatEntry = ENTRY_READ (pFd, pFatDesc->dosFatDesc.activeCopyNum,                               curClust);        if ((fatEntry == FAT_CBIO_ERR)&&(pFd->fatHdl.errCode == FAT_CBIO_ERR))            return 0;        if (fatEntry == pFatDesc->dos_fat_avail)            {	/* free space */            contigCount++;	/* one more found */            }        else            {            /* Check for maximum */            if (contigCount > maxCount)                {                maxStart = firstContig;                maxCount = contigCount;                }            firstContig = curClust + 1;	/* next one will be new start */            contigCount = 0;            }        } /* for */    if (contigCount > maxCount)        {        maxStart = firstContig;        maxCount = contigCount;        }    *pMaxStart = maxStart;    return (maxCount);    } /* fat16MaxContigClustersGet *//********************************************************************************* fat16ContigAlloc - allocate <numSect> contiguous chain** This function employs the Best Fit algorithm to locate a* contiguous fragment of space for the requested size** RETURNS: ERROR if requested space is not available*/LOCAL STATUS fat16ContigAlloc    (    FAST DOS_FILE_DESC_ID pFd,		/* pointer to file descriptor */    FAST uint32_t		number		/* number of sectors needed */    )    {    FAST DOS_FILE_HDL_ID	pFileHdl = pFd->pFileHdl;					/* pointer to file handle */    FAST DOS_VOLUME_DESC_ID	pVolDesc = pFd->pVolDesc;					/* pointer to volume descriptor */    FAST MS_FAT_DESC_ID	pFatDesc = (void *) pVolDesc->pFatDesc;					/* pointer to FAT handler descriptor */    FAST uint32_t		fatEntry;	/*  */    FAST uint32_t		curClust;	/*  */    FAST uint32_t		firstContig;	/* 1st clust. of contig area */    FAST uint32_t		contigCount;	/* count of fit clusters */    FAST uint32_t		bestCount;	/*  */         uint32_t		bestStart;	/*  */    if (number == (uint32_t)CONTIG_MAX)        {        semTake (pFatDesc->allocSem, WAIT_FOREVER);        number = fat16MaxContigClustersGet (pFd, &bestStart);        if (number == 0)            {            errnoSet (S_dosFsLib_DISK_FULL);            goto contig_alloc_error;            }        goto contig_alloc;        }    /* Convert number of sectors needed to number of clusters */    number = (number + pVolDesc->secPerClust - 1) / pVolDesc->secPerClust;    firstContig = DOS_MIN_CLUST;    contigCount = 0;    bestStart   = 0;    bestCount   = pFatDesc->nFatEnts;    semTake (pFatDesc->allocSem, WAIT_FOREVER);    for (curClust = DOS_MIN_CLUST;     /* firstContig <= (pFatDesc->nFatEnts - number); ??? for 1st fit ??? */         curClust < (pFatDesc->nFatEnts - number);	         curClust++)        {        fatEntry = ENTRY_READ (pFd, pFatDesc->dosFatDesc.activeCopyNum,                               curClust);        if ((fatEntry == FAT_CBIO_ERR)&&(pFd->fatHdl.errCode == FAT_CBIO_ERR))            goto contig_alloc_error;#if FALSE	/* best fit */        if (fatEntry == pFatDesc->dos_fat_avail)            {	/* free space */            contigCount++;	/* one more found */            }        else            {            /* Check for best fit */            if ((contigCount >= number) && (contigCount < bestCount))                {		/* most close from above */                bestStart = firstContig;                bestCount = contigCount;                if (contigCount == number)                    break;	/* fit exactly */                }            firstContig = curClust + 1;	/* next one will be new start */            contigCount = 0;            }#else	/* 1st fit */        if (fatEntry == pFatDesc->dos_fat_avail)            {	/* free space */            if (++contigCount == number)	/* one more found */                {                bestStart = firstContig;	/* ??? temporary solution */                bestCount = contigCount;	/* ??? temporary solution */                goto contig_alloc;		/* quit if enough found */                }            }        else	/* allocated space */            {            firstContig = curClust + 1;	/* next one will be new start */            contigCount = 0;            }#endif /* FALSE */        } /* for */    if (bestStart == 0)        {        if (contigCount < number)            {            errnoSet (S_dosFsLib_NO_CONTIG_SPACE);            goto contig_alloc_error;            }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲综合性久久久影院| 欧美日本韩国一区| 欧美高清在线一区二区| 成人污污视频在线观看| 国产精品色呦呦| 97久久超碰国产精品| 亚洲美女在线国产| 欧美群妇大交群中文字幕| 日本亚洲电影天堂| 久久青草欧美一区二区三区| 国产精品88av| 亚洲免费观看在线观看| 欧美三级韩国三级日本三斤| 免费看欧美女人艹b| 精品欧美黑人一区二区三区| 国产成人h网站| 亚洲国产一区二区三区 | 国产精品久久久久久久久动漫| 不卡电影免费在线播放一区| 亚洲免费av网站| 日韩欧美美女一区二区三区| 国产福利一区在线观看| 一区av在线播放| 精品卡一卡二卡三卡四在线| 成人黄色国产精品网站大全在线免费观看 | 欧美一区二区三区精品| 国产永久精品大片wwwapp| 自拍偷拍亚洲综合| 精品国产一区二区三区av性色| 国产.精品.日韩.另类.中文.在线.播放| 中文字幕视频一区| 在线播放亚洲一区| a美女胸又www黄视频久久| 日韩经典一区二区| 亚洲色图欧洲色图| 26uuu精品一区二区在线观看| 99久久久久久| 国产一区二区毛片| 亚洲国产另类av| 日韩伦理av电影| 久久综合九色综合欧美98| 91福利视频在线| 丁香亚洲综合激情啪啪综合| 日韩激情一二三区| 亚洲综合一区二区精品导航| 久久久午夜精品理论片中文字幕| 欧美日韩国产一级二级| bt欧美亚洲午夜电影天堂| 久久精品国产精品亚洲综合| 亚洲一区二区三区中文字幕 | 精品一二三四区| 性欧美疯狂xxxxbbbb| 一区在线观看免费| 久久久久亚洲蜜桃| 欧美第一区第二区| 欧美日本高清视频在线观看| 色婷婷久久久综合中文字幕| 国产99久久久久| 精品一区二区久久久| 免费的成人av| 日韩和欧美一区二区| 一区二区三区久久| 依依成人精品视频| 中文字幕日韩av资源站| 国产日产欧美一区二区三区| 欧美精品一区男女天堂| 91精品在线免费观看| 欧美色成人综合| 在线观看成人小视频| 日本精品一级二级| 色综合久久88色综合天天6| 成人性视频免费网站| 国产河南妇女毛片精品久久久 | 日本不卡一二三区黄网| 亚洲第一会所有码转帖| 亚洲影院理伦片| 一区二区三区视频在线观看| 亚洲黄色在线视频| 一区二区欧美国产| 一区二区三区四区在线播放| 亚洲综合一区二区精品导航| 亚洲综合色自拍一区| 亚洲综合丁香婷婷六月香| 亚洲一区二区黄色| 午夜精品福利久久久| 热久久免费视频| 久久激情综合网| 国产麻豆精品一区二区| 国产凹凸在线观看一区二区 | 91麻豆123| 欧美体内she精高潮| 欧美精品丝袜久久久中文字幕| 91精品国产综合久久香蕉麻豆| 欧美精品三级日韩久久| 精品国产乱码久久久久久闺蜜| 久久久久久久性| 国产精品高潮久久久久无| 亚洲丝袜美腿综合| 午夜精品aaa| 国产一区亚洲一区| 97精品久久久久中文字幕| 欧美日韩一区二区三区免费看| 日韩欧美在线不卡| 久久精品一区二区三区av| 国产精品动漫网站| 视频一区二区三区入口| 国产美女娇喘av呻吟久久| 99热精品一区二区| 91麻豆精品久久久久蜜臀| 久久亚洲精精品中文字幕早川悠里 | 制服视频三区第一页精品| 日韩三级在线免费观看| 亚洲国产经典视频| 日韩国产一区二| 处破女av一区二区| 欧美日韩电影一区| 国产欧美一区二区三区在线看蜜臀 | 日韩高清中文字幕一区| 床上的激情91.| 3atv一区二区三区| 中文字幕一区二区三区精华液 | 成人免费视频视频| 欧美唯美清纯偷拍| 国产精品区一区二区三区| 亚洲第一久久影院| av电影在线不卡| 26uuu国产一区二区三区| 亚洲视频免费看| 国产综合久久久久久鬼色 | 欧美bbbbb| 色综合久久久久综合体桃花网| 精品国产成人系列| 亚洲国产成人av网| 不卡视频免费播放| 精品成人在线观看| 亚洲成人中文在线| 91麻豆免费视频| 国产亚洲精品bt天堂精选| 日本色综合中文字幕| 99久久精品情趣| 久久这里只有精品视频网| 天堂成人国产精品一区| 99免费精品在线| 国产片一区二区| 国产经典欧美精品| 亚洲精品一区二区三区福利 | 欧美色网一区二区| 最近中文字幕一区二区三区| 国产在线不卡视频| 日韩欧美电影一二三| 五月天国产精品| 在线观看视频91| 中文字幕亚洲电影| 成人精品gif动图一区| 久久久久一区二区三区四区| 九色|91porny| 日韩视频中午一区| 蜜臀av一区二区三区| 制服.丝袜.亚洲.另类.中文| 亚洲国产日韩精品| 91福利视频久久久久| 亚洲欧洲中文日韩久久av乱码| 成人av在线一区二区三区| 国产亚洲欧美在线| 东方aⅴ免费观看久久av| 国产欧美日产一区| 不卡大黄网站免费看| 国产精品剧情在线亚洲| 99久久er热在这里只有精品15 | 国产精品综合一区二区三区| 欧美成人午夜电影| 韩国女主播成人在线观看| 精品国产污网站| 国产乱人伦偷精品视频不卡| 久久影院午夜片一区| 国产精品一区二区无线| 久久久精品免费观看| 成人黄色软件下载| 亚洲乱码精品一二三四区日韩在线| 97成人超碰视| 亚洲国产精品视频| 制服丝袜日韩国产| 国产在线精品一区二区| 欧美国产精品专区| 日本精品视频一区二区| 亚洲h在线观看| 日韩精品一区二区在线| 国产河南妇女毛片精品久久久 | 香蕉成人啪国产精品视频综合网| 欧美视频中文一区二区三区在线观看 | 久久精品国产77777蜜臀| 久久久午夜精品理论片中文字幕| 丁香激情综合五月| 亚洲一区二区三区爽爽爽爽爽| 欧美猛男超大videosgay| 精品一区二区三区蜜桃| 国产精品电影一区二区| 制服视频三区第一页精品| 国产成人久久精品77777最新版本| √…a在线天堂一区|