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

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

?? tffsdrv.c

?? vxworks操作系統(tǒng)的源代碼
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
        }    ioreq.irHandle = pTffsDev->tffsDriveNo;    status = flCheckVolume(&ioreq);    if (status == flNotMounted)        {        status = flMountVolume(&ioreq);        if (status == flOK)            {            ioreq.irData = &bpb;            status = flGetBPB(&ioreq);            }        if (status != flOK)            {            pTffsDev->tffsBlkdev.bd_readyChanged = TRUE;            return (ERROR);            }        /* Modify BLK_DEV structure */        tffsSetFromBPB( &(pTffsDev->tffsBlkdev), &bpb);        pTffsDev->tffsBlkdev.bd_mode = O_RDWR; /* initial mode for device */        }    ioreq.irSectorNo    = startBlk;    ioreq.irSectorCount = numBlks;    ioreq.irData        = pBuffer;    status = flAbsRead(&ioreq);    /* if success cancel dosFs re-mount volume request */    if (status != flOK)        pTffsDev->tffsBlkdev.bd_readyChanged = TRUE;    return ((status == flOK) ? OK : ERROR);    }/********************************************************************************* tffsBlkWrt - write sequence of blocks to TFFS device** This routine writes a sequence of blocks to TrueFFS device.** RETURNS: OK, or ERROR if it failed.** NOMANUAL*/LOCAL STATUS tffsBlkWrt     (    FAST TFFS_DEV * pTffsDev,		/* pointer to device descriptor */    int startBlk,			/* starting block number to write */    int numBlks,			/* number of blocks to write */    char * pBuffer			/* pointer to buffer containing data */    )    {    FLStatus   status = flOK;    IOreq      ioreq;    BPB        bpb;    if ( (NULL == pTffsDev) || (NULL == pBuffer) ||         (pTffsDev->tffsDriveNo >= DRIVES) )        {        return (ERROR);        }    ioreq.irHandle = pTffsDev->tffsDriveNo;    status = flCheckVolume(&ioreq);    if (status == flNotMounted)        {        status = flMountVolume(&ioreq);        if (status == flOK)            {            ioreq.irData = &bpb;            status = flGetBPB(&ioreq);            }        if (status != flOK)            {            pTffsDev->tffsBlkdev.bd_readyChanged = TRUE;            return (ERROR);            }        /* Modify BLK_DEV structure */        tffsSetFromBPB( &(pTffsDev->tffsBlkdev), &bpb);        pTffsDev->tffsBlkdev.bd_mode = O_RDWR;	/* initial mode for device */        }    ioreq.irSectorNo    = startBlk;    ioreq.irSectorCount = numBlks;    ioreq.irData        = pBuffer;    status = flAbsWrite(&ioreq);    if (status == flWriteProtect)        {        flDismountVolume(&ioreq);		/* force a remount */        pTffsDev->tffsBlkdev.bd_mode = O_RDONLY;        }    /* re-mount volume request */    if (status != flOK)        pTffsDev->tffsBlkdev.bd_readyChanged = TRUE;    return ((status == flOK) ? OK : ERROR);    }/********************************************************************************* tffsSetFromBPB - copy some data from BIOS parameter block** This routine copies BIOS parameter block data describing the flash device* returned by TrueFFS into a device descriptor.** RETURNS: N/A** NOMANUAL*/LOCAL void tffsSetFromBPB     (    BLK_DEV * pBlkDev,		/* pointer to device descriptor */    BPB * pBPB			/* pointer to BIOS parameters block */    )    {    if ((NULL == pBlkDev) || (NULL == pBPB))        return;    pBlkDev->bd_nBlocks      = 0;    pBlkDev->bd_bytesPerBlk  = 0;    pBlkDev->bd_blksPerTrack = 0;    pBlkDev->bd_nHeads       = 0;     /* clear first */    if( UNAL2(pBPB->totalSectorsInVolumeDOS3) )        pBlkDev->bd_nBlocks  = UNAL2(pBPB->totalSectorsInVolumeDOS3);    else        pBlkDev->bd_nBlocks  = LE4(pBPB->totalSectorsInVolume);    pBlkDev->bd_bytesPerBlk  = UNAL2(pBPB->bytesPerSector);    pBlkDev->bd_blksPerTrack = LE2(pBPB->sectorsPerTrack);    pBlkDev->bd_nHeads       = LE2(pBPB->noOfHeads);    }/********************************************************************************* tffsDiskChangeAnnounce - announce disk change to the file system attached** This routine is called by TFFS to update the the readyChanged field in the* device descriptor so that the file system can be notified of a disk change.** RETURNS: N/A** NOMANUAL*/void tffsDiskChangeAnnounce    (    unsigned volNo		/* FLite drive number (0 - DRIVES-1) */    )    {    if ((volNo < DRIVES) && (tffsBlkDevs[volNo] != NULL))        tffsBlkDevs[volNo]->tffsBlkdev.bd_readyChanged = TRUE;    }/********************************************************************************* tffsDevFormat - format a flash device for use with TrueFFS** This routine formats a flash device for use with TrueFFS.  It takes two * parameters, a drive number and a pointer to a device format structure. * This structure describes how the volume should be formatted.  The structure * is defined in dosformt.h.  The drive number is assigned in the order that * the socket component for the device was registered.** The format process marks each erase unit with an Erase Unit Header (EUH) and* creates the physical and virtual Block Allocation Maps (BAM) for the device. * The erase units reserved for the "boot-image" are skipped and the first* EUH is placed at number (boot-image length - 1). To write to the boot-image* region, call tffsBootImagePut(). * * WARNING: If any of the erase units in the boot-image * region contains an erase unit header from a previous format call (this can* happen if you reformat a flash device specifying a larger boot region) * TrueFFS fails to mount the device.  To fix this problem, use tffsRawio() to* erase the problem erase units (thus removing the outdated EUH).  ** The macro TFFS_STD_FORMAT_PARAMS defines the default values used for * formatting a flask disk device. If the second argument to this routine * is zero, tffsDevFormat() uses these default values.** RETURNS: OK, or ERROR if it failed.*/STATUS tffsDevFormat     (    int tffsDriveNo,		/* TrueFFS drive number (0 - DRIVES-1) */    int arg			/* pointer to tffsDevFormatParams structure */    )    {    tffsDevFormatParams defaultParams = TFFS_STD_FORMAT_PARAMS;    tffsDevFormatParams *devFormatParams;    IOreq                ioreq;    FLStatus             status;    if (tffsDriveNo >= DRIVES)        return (ERROR);    /* tell dosFs to re-mount volume */      if (tffsBlkDevs[tffsDriveNo] != NULL)        tffsBlkDevs[tffsDriveNo]->tffsBlkdev.bd_readyChanged = TRUE;    if (arg == 0)        devFormatParams = &defaultParams;    else        devFormatParams = (tffsDevFormatParams *) arg;    ioreq.irHandle = tffsDriveNo;    ioreq.irFlags  = devFormatParams->formatFlags;    ioreq.irData   = &(devFormatParams->formatParams);    status = flFormatVolume(&ioreq);    return ((status == flOK) ? OK : ERROR);    }/********************************************************************************* tffsRawio - low level I/O access to flash components** Use the utilities provided by thisroutine with the utmost care. If you use * these routines carelessly, you risk data loss as well as  permanent * physical damage to the flash device.** This routine is a gateway to a series of utilities (listed below). Functions * such as mkbootTffs() and tffsBootImagePut() use these tffsRawio() utilities * to write boot sector information. The functions for physical read, write, and * erase are made available with the intention that they be used on erase units * allocated to the boot-image region by tffsDevFormat(). Using these functions * elsewhere could be dangerous.** The <arg0>, <arg1>, and <arg2> parameters to tffsRawio() are interpreted * differently depending on the function number you specify for <functionNo>. * The drive number is determined by the order in which the socket * components were registered. ** .TS* tab(|);* lf3 lf3 lf3 lf3* l l l l .* Function Name | arg0 | arg1 | arg2* _* TFFS_GET_PHYSICAL_INFO | user buffer address | N/A | N/A* TFFS_PHYSICAL_READ | address to read | byte count | user buffer address* TFFS_PHYSICAL_WRITE | address to write | byte count | user buffer address* TFFS_PHYSICAL_ERASE | first unit | number of units | N/A* TFFS_ABS_READ	| sector number | number of sectors | user buffer address* TFFS_ABS_WRITE | sector number | number of sectors | user buffer address* TFFS_ABS_DELETE | sector number | number of sectors | N/A* TFFS_DEFRAGMENT_VOLUME | number of sectors | user buffer address | N/A* .TE** TFFS_GET_PHYSICAL_INFO writes the flash type, erasable block size, and media* size to the user buffer specified in <arg0>.** TFFS_PHYSICAL_READ reads <arg1> bytes from <arg0> and writes them to * the buffer specified by <arg2>.** TFFS_PHYSICAL_WRITE copies <arg1> bytes from the <arg2> buffer and writes * them to the flash memory location specified by <arg0>.  * This aborts if the volume is already mounted to prevent the versions of * translation data in memory and in flash from going out of synchronization.** TFFS_PHYSICAL_ERASE erases <arg1> erase units, starting at the erase unit* specified in <arg0>.* This aborts if the volume is already mounted to prevent the versions of * translation data in memory and in flash from going out of synchronization.** TFFS_ABS_READ reads <arg1> sectors, starting at sector <arg0>, and writes* them to the user buffer specified in <arg2>.** TFFS_ABS_WRITE takes data from the <arg2> user buffer and writes <arg1> * sectors of it to the flash location starting at sector <arg0>.* * TFFS_ABS_DELETE deletes <arg1> sectors of data starting at sector <arg0>. ** TFFS_DEFRAGMENT_VOLUME calls the defragmentation routine with the minimum* number of sectors to be reclaimed, <arg0>, and writes the actual number * reclaimed in the user buffer by <arg1>. Calling this function through some * low priority task will make writes more deterministic.* No validation is done of the user specified address fields, so the functions * assume they are writable. If the address is invalid, you could see bus errors* or segmentation faults.* * RETURNS: OK, or ERROR if it failed.*/STATUS tffsRawio     (    int tffsDriveNo,		/* TrueFFS drive number (0 - DRIVES-1) */    int functionNo,		/* TrueFFS function code */    int arg0,			/* argument 0 */    int arg1,			/* argument 1 */    int arg2			/* argument 2 */    )    {    IOreq	ioreq;    FLStatus	status;    int		function;    if (tffsDriveNo >= DRIVES)        return (ERROR);    ioreq.irHandle = tffsDriveNo;	/* drive number */    switch (functionNo)	{	case TFFS_GET_PHYSICAL_INFO:	    function = FL_GET_PHYSICAL_INFO;	    ioreq.irData = (char *)arg0; /* address of user buffer to store */	    break;	case TFFS_PHYSICAL_READ:	    function = FL_PHYSICAL_READ;	    ioreq.irAddress = arg0;	/* chip/card address to read/write */	    ioreq.irByteCount = arg1;	/* number of bytes to read/write */	    ioreq.irData = (char *)arg2; /* address of user buffer to r/w */	    break;	case TFFS_PHYSICAL_WRITE:	    function = FL_PHYSICAL_WRITE;	    ioreq.irAddress = arg0;	/* chip/card address to read/write */	    ioreq.irByteCount = arg1;	/* number of bytes to read/write */	    ioreq.irData = (char *)arg2; /* address of user buffer to r/w */	    break;	case TFFS_PHYSICAL_ERASE:	    function = FL_PHYSICAL_ERASE;	    ioreq.irUnitNo = arg0;	/* first unit to erase */	    ioreq.irUnitCount = arg1;	/* number of units to erase */	    break;		case TFFS_ABS_READ:	    function = FL_ABS_READ;	    ioreq.irSectorNo = arg0;	/* sector number to read/write */	    ioreq.irSectorCount = arg1;	/* number of sectors to read/write */	    ioreq.irData = (char *)arg2; /* address of user buffer to r/w */	    break;		case TFFS_ABS_WRITE:	    function = FL_ABS_WRITE;	    ioreq.irSectorNo = arg0;	/* sector number to read/write */	    ioreq.irSectorCount = arg1;	/* number of sectors to read/write */	    ioreq.irData = (char *)arg2; /* address of user buffer to r/w */	    break;		case TFFS_ABS_DELETE:	    function = FL_ABS_DELETE;	    ioreq.irSectorNo = arg0;	/* sector number to delete */	    ioreq.irSectorCount = arg1;	/* number of sectors to delete */	    break;		case TFFS_DEFRAGMENT_VOLUME:	    function = FL_DEFRAGMENT_VOLUME;	    ioreq.irLength = arg0;	/* minimum number of sectors to get */	    break;		default:	    return (ERROR);	}    status = flCall (function, &ioreq);    switch (functionNo)	{	case TFFS_DEFRAGMENT_VOLUME:	    *(int *)arg1 = ioreq.irLength; /* min number of sectors gotten */	    break;	}    return ((status == flOK) ? OK : ERROR);    }#if     (POLLING_INTERVAL > 0)/********************************************************************************* flPollSemCreate - create semaphore for polling task** This routine creates the semaphore used to delay socket polling until* TrueFFS initialization is complete.** RETURNS: flOK, or flNotEnoughMemory if it fails.*/LOCAL FLStatus flPollSemCreate (void)    {    if ((flPollSemId = semBCreate (SEM_Q_PRIORITY, SEM_EMPTY)) == NULL)        return (flNotEnoughMemory);    else        return (flOK);    }#endif /* (POLLING_INTERVAL > 0) */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲激情网站免费观看| 一区二区三区精密机械公司| 色综合视频在线观看| 国产精品毛片久久久久久久| 成人在线一区二区三区| 成人在线视频一区| 欧美国产综合一区二区| 欧美区在线观看| 不卡一区中文字幕| 蜜臀av国产精品久久久久| 最新欧美精品一区二区三区| 日韩一级免费观看| 欧美色图激情小说| 夫妻av一区二区| 精油按摩中文字幕久久| 亚洲一级在线观看| 亚洲三级视频在线观看| 久久久精品综合| 日韩欧美电影一区| 7777精品伊人久久久大香线蕉超级流畅| 国产成人高清在线| 国产在线播放一区三区四| 奇米影视7777精品一区二区| 亚洲欧美另类综合偷拍| 国产精品不卡在线| 久久久久久久久久久久电影| 精品日韩一区二区三区免费视频| 欧美性做爰猛烈叫床潮| 色婷婷国产精品| 99视频一区二区| 成人一级片网址| 国产成人精品免费在线| 国产精品 欧美精品| 国产在线国偷精品免费看| 日本一区中文字幕| 美女网站一区二区| 蜜桃久久av一区| 久久精品二区亚洲w码| 麻豆精品一二三| 蜜桃精品视频在线观看| 精油按摩中文字幕久久| 国内精品久久久久影院薰衣草| 免费人成在线不卡| 蜜桃久久av一区| 国内不卡的二区三区中文字幕| 久久99精品久久久久| 精东粉嫩av免费一区二区三区| 麻豆成人久久精品二区三区红| 久久狠狠亚洲综合| 国产精品66部| 91老师片黄在线观看| 9l国产精品久久久久麻豆| 99在线精品观看| 男女性色大片免费观看一区二区| 欧美高清一级片在线观看| 欧美吞精做爰啪啪高潮| 麻豆专区一区二区三区四区五区| 蜜桃视频免费观看一区| 久久国产精品色婷婷| 国产乱色国产精品免费视频| 丁香激情综合国产| 色哦色哦哦色天天综合| 欧美日韩亚洲综合在线| 欧美一区二区三区免费观看视频| 精品国产免费一区二区三区香蕉| 国产调教视频一区| 综合欧美一区二区三区| 亚洲高清视频在线| 久热成人在线视频| 成人午夜视频免费看| 色偷偷一区二区三区| 制服丝袜激情欧洲亚洲| 久久久国产精品不卡| 亚洲精品乱码久久久久久久久| 日韩av中文字幕一区二区| 国产精品一二三| 色狠狠桃花综合| 日韩欧美一区在线| 国产免费观看久久| 成av人片一区二区| 成人动漫一区二区三区| 91视视频在线观看入口直接观看www | 午夜一区二区三区在线观看| 另类小说欧美激情| 91小视频在线免费看| 日韩一卡二卡三卡国产欧美| 国产精品盗摄一区二区三区| 亚洲成人免费电影| 国产91丝袜在线播放九色| 精品视频123区在线观看| 国产日本欧洲亚洲| 首页亚洲欧美制服丝腿| 99精品视频在线观看免费| 日韩免费观看2025年上映的电影| 国产精品入口麻豆九色| 图片区小说区区亚洲影院| 午夜av区久久| 麻豆视频一区二区| 91精彩视频在线| 日韩精品中文字幕在线一区| 国产精品视频免费看| 91精品在线免费观看| 精品视频一区二区三区免费| 日韩一区二区视频| 91麻豆国产自产在线观看| 欧美三级在线看| 国产日产精品一区| 亚洲欧美日韩人成在线播放| 国产剧情在线观看一区二区| 日本精品一区二区三区四区的功能| 91精品国产一区二区| 亚洲男女毛片无遮挡| 精品在线播放午夜| 色噜噜狠狠成人中文综合 | 国产原创一区二区三区| 日本道精品一区二区三区| 91精品国产综合久久久久久| 亚洲精品国产精华液| 国产老肥熟一区二区三区| 欧美日韩午夜在线| 国产精品久久久久久久午夜片| 亚洲v精品v日韩v欧美v专区| 狠狠色综合日日| 欧美一区二区三区喷汁尤物| 亚洲色图20p| 国产伦精品一区二区三区在线观看| 欧美日韩美女一区二区| 中文字幕中文字幕在线一区 | 成人av电影在线播放| 精品国产乱码久久久久久浪潮| 亚洲自拍偷拍欧美| 北条麻妃一区二区三区| 久久久影院官网| 韩日av一区二区| 欧美日韩另类一区| 日韩福利视频导航| 在线观看视频一区二区| 国产精品久久福利| 国产99久久久国产精品潘金网站| 日韩免费在线观看| 久久99精品一区二区三区三区| 欧美乱妇15p| 亚洲国产精品久久久久婷婷884| 99精品欧美一区| 中文字幕制服丝袜成人av| 久久国产精品99久久久久久老狼| 91久久精品网| 一级女性全黄久久生活片免费| 99热这里都是精品| 中文字幕不卡在线播放| 国产99一区视频免费| 2020国产成人综合网| 粉嫩一区二区三区性色av| 国产亚洲欧美中文| 国产99一区视频免费| 久久久91精品国产一区二区精品| 九色综合国产一区二区三区| 91精品国产综合久久小美女| 免费成人深夜小野草| 91精品国产综合久久久久久| 蜜臀av性久久久久蜜臀aⅴ流畅| 91精品国产91久久久久久一区二区| 亚洲精选视频免费看| 欧美美女激情18p| 久久99久国产精品黄毛片色诱| 日韩精品一区二区三区老鸭窝| 麻豆精品视频在线| 国产肉丝袜一区二区| 欧美亚洲国产bt| 日本伊人午夜精品| 久久―日本道色综合久久| 成人小视频在线观看| 国产精品麻豆久久久| 欧美二区三区91| 久久69国产一区二区蜜臀| 久久精品男人天堂av| 不卡视频在线看| 一区二区三区四区视频精品免费| 欧美一区二区三区电影| 国产福利一区在线| 亚洲免费色视频| 欧美一区二区三区四区视频| 国产乱色国产精品免费视频| 亚洲一级片在线观看| 久久尤物电影视频在线观看| 成人动漫一区二区在线| 亚洲成人免费看| 国产丝袜欧美中文另类| 在线中文字幕一区二区| 美女视频网站久久| 亚洲精品一二三四区| 欧美成人一级视频| 成人免费毛片嘿嘿连载视频| 亚洲国产精品久久人人爱蜜臀 | 欧美xxx久久| 欧洲视频一区二区| 国产精品自在欧美一区| 亚洲综合色婷婷| 国产午夜精品一区二区三区四区 | 欧美在线你懂得|