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

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

?? dpartcbio.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
    if(TRUE == cbioRdyChgdGet (dev))	{	errno = S_ioLib_DISK_NOT_PRESENT ;	return ERROR;	}    if( (srcBlock) > pDev->cbioParams.nBlocks ||        (dstBlock) > pDev->cbioParams.nBlocks )	return ERROR;    if( (srcBlock+numBlocks) > pDev->cbioParams.nBlocks ||        (dstBlock+numBlocks) > pDev->cbioParams.nBlocks )	return ERROR;    srcBlock += pDev->cbioParams.blockOffset;    dstBlock += pDev->cbioParams.blockOffset;    if( semTake( pDev->cbioMutex, WAIT_FOREVER) == ERROR )	return ERROR;    retStat = pDev->pDc->subDev->pFuncs->cbioDevBlkCopy(		pDev->pDc->subDev,		srcBlock,		dstBlock,		numBlocks		);    if( retStat == ERROR )	if( TRUE == cbioRdyChgdGet (dev->pDc->subDev))	    CBIO_READYCHANGED (dev) = TRUE;    semGive( pDev->cbioMutex );    return ( retStat);    }/********************************************************************************* dpartIoctl - Misc control operations ** This performs the requested ioctl() operation.* * CBIO modules can expect the following ioctl() codes from cbioLib.h:* CBIO_RESET - reset the CBIO device and the lower layer* CBIO_STATUS_CHK - check device status of CBIO device and lower layer* CBIO_DEVICE_LOCK - Prevent disk removal * CBIO_DEVICE_UNLOCK - Allow disk removal* CBIO_DEVICE_EJECT - Unmount and eject device* CBIO_CACHE_FLUSH - Flush any dirty cached data* CBIO_CACHE_INVAL - Flush & Invalidate all cached data* CBIO_CACHE_NEWBLK - Allocate scratch block** * command - ioctl() command being issued* * arg - specific to the particular ioctl() function requested or un-used.** RETURNS OK or ERROR and may otherwise set errno.*/LOCAL STATUS dpartIoctl    (    CBIO_DEV_ID	dev,    UINT32	command,    addr_t	arg    )    {    STATUS retStat = ERROR ;    if(OK != cbioDevVerify (dev))	{	INFO_MSG("dpartIoctl: invalid handle\n");	return ERROR;	}    if( semTake( dev->cbioMutex, WAIT_FOREVER) == ERROR )	return ERROR;    switch ( command )	{	case CBIO_RESET :		/*		 * if this is the first partition to issue RESET		 * we need to RESET the lower level device too,		 * otherwise, RESET only this partition.		 */		if((TRUE == cbioRdyChgdGet (dev->pDc->subDev)) ||		   (TRUE == cbioRdyChgdGet (dev->pDc->masterDev)))		    {		    DEBUG_MSG("dpartCbio: resetting subordinate\n");		    retStat = dev->pDc->subDev->pFuncs->cbioDevIoctl(				dev->pDc->subDev,				command,				arg );		    /* and also fill  the partitions geometry now */		    if( retStat == OK )			{			retStat = dpartPartTableFill( dev->pDc );			}		    if( retStat == OK )			{			CBIO_READYCHANGED (dev->pDc->masterDev) = FALSE;			}		    }		else		    {		    /*		     * if masterDev does not have readyChanged		     * there is no need to reset subDev, its been		     * already reset		     */		    retStat = OK;		    }		/* non-existent partitions will remain "removed" */		if (retStat == OK && dev->cbioParams.nBlocks == 0)		    {		    errno = S_ioLib_DISK_NOT_PRESENT ;		    retStat = ERROR ;		    }		if( retStat == OK )		    CBIO_READYCHANGED(dev) = FALSE;		break;	/* NEWBLK is the only ioctl where block# is coded in arg */	case CBIO_CACHE_NEWBLK:	    arg += dev->cbioParams.blockOffset ;	    /*FALLTHROUGH*/	/* all other commands should be executed by the lower layer */	case CBIO_STATUS_CHK : 	case CBIO_DEVICE_LOCK :	case CBIO_DEVICE_UNLOCK :	case CBIO_DEVICE_EJECT :	    /* check if master has readyChanged */	    if((TRUE == cbioRdyChgdGet (dev->pDc->subDev)) ||	       (TRUE == cbioRdyChgdGet (dev->pDc->masterDev)))		{		CBIO_READYCHANGED (dev) = TRUE;		}	    /*FALLTHROUGH*/	case CBIO_CACHE_FLUSH :	case CBIO_CACHE_INVAL :	default:	    if(TRUE == cbioRdyChgdGet (dev))		{		errno = S_ioLib_DISK_NOT_PRESENT ;		retStat = ERROR ;		}	    else		{		if( command == (int)CBIO_DEVICE_LOCK )		    semTake( dev->pDc->subDev->cbioMutex, WAIT_FOREVER) ;		retStat = dev->pDc->subDev->pFuncs->cbioDevIoctl(			    dev->pDc->subDev,			    command,			    arg );		if( command == (int)CBIO_DEVICE_UNLOCK )		    semGive( dev->pDc->subDev->cbioMutex) ;		}	} /* end of switch */    if( retStat == ERROR )	if( TRUE == cbioRdyChgdGet (dev->pDc->subDev))	    CBIO_READYCHANGED (dev) = TRUE;    semGive( dev->cbioMutex );    return( retStat );    }/********************************************************************************* dpartDevCreate - Initialize a partitioned disk** To handle a partitioned disk, this function should be called,* with <subDev> as the handle returned from dcacheDevCreate(),* It is recommended that for efficient operation a single disk cache* be allocated for the entire disk and shared by its partitions.** <nPart> is the maximum number of partitions which are expected* for the particular disk drive. Up to 24 (C-Z) partitions per disk * are supported.** PARTITION DECODE FUNCTION* An external partition table decode function is provided via the* <pPartDecodeFunc> argument, which implements a particular style and* format of partition tables, and fill in the results into a table* defined as Pn array of PART_TABLE_ENTRY types. See dpartCbio.h* for definition of PART_TABLE_ENTRY.* The prototype for this function is as follows:* * .CS*     STATUS parDecodeFunc* 	(* 	CBIO_DEV_ID dev,	/@ device from which to read blocks @/* 	PART_TABLE_ENTRY *pPartTab, /@ table where to fill results @/* 	int nPart		/@ # of entries in <pPartTable> @/* 	)* .CE** RETURNS: CBIO_DEV_ID or NULL if error creating CBIO device.* * SEE ALSO: dosFsDevCreate().* INTERNAL* during create, readyChanged bit is TRUE, so no accesses are allowed* until after a CBIO_RESET, at which time the actual partition table* will be brought in and applied.*/CBIO_DEV_ID dpartDevCreate    (    CBIO_DEV_ID	subDev,		/* lower level CBIO device */    int		nPart,		/* # of partitions */    FUNCPTR	pPartDecodeFunc	/* function to decode partition table */    )    {    CBIO_DEV_ID	cbio = subDev ;    CBIO_DEV_ID	pDev = NULL ;    DPART_CTRL * pDc ;    int p ;    if( nPart > PART_MAX_ENTRIES || pPartDecodeFunc == NULL )	{	printErr ("%d is too many partitions, max limit %d\n",		  nPart, PART_MAX_ENTRIES);	errno = EINVAL;	return NULL;	}    cbioLibInit();	/* just in case */    /* if this is a BLK_DEV, create a CBIO_DEV */    if (OK != cbioDevVerify( subDev ))        {        /* attempt to handle BLK_DEV subDev */        cbio = cbioWrapBlkDev ((BLK_DEV *) subDev);        if( NULL != cbio )            {            /* SPR#71633, clear the errno set in cbioDevVerify() */            errno = 0;            }        }    else	{	cbio = subDev;	}    if( NULL == cbio )	{	DEBUG_MSG("dpartDevCreate: invalid handle\n");	return NULL;	}    /* allocate our main DPART_CTRL structure */    pDc = KHEAP_ALLOC((sizeof(DPART_CTRL)));    if( pDc == NULL )	{	return( NULL );	}    bzero( (char *) pDc, sizeof( DPART_CTRL) );    /* create the primary CBIO handle */    pDev = cbioDevCreate ( NULL, 0 );    if( pDev == NULL )	{	return( NULL );	}    /* the primary CBIO handle is not for any actual I/O, just for show */    pDev->cbioDesc	= "dpartCbio Partition Manager" ;    CBIO_READYCHANGED (pDev)		= CBIO_READYCHANGED (cbio);    pDev->cbioParams.cbioRemovable	= cbio->cbioParams.cbioRemovable ;    pDev->cbioParams.nBlocks		= cbio->cbioParams.nBlocks ;    pDev->cbioParams.bytesPerBlk	= cbio->cbioParams.bytesPerBlk ;    pDev->cbioParams.blocksPerTrack	= cbio->cbioParams.blocksPerTrack ;    pDev->cbioParams.nHeads		= cbio->cbioParams.nHeads ;    pDev->cbioMode			= cbio->cbioMode ;    pDev->cbioParams.blockOffset	= 0 ;    pDev->cbioParams.lastErrBlk		= NONE ;    pDev->cbioParams.lastErrno		= 0 ;    pDev->cbioPartIndx			= NONE ; /* master device */    /* SPR#67729: Fill in the members subDev and isDriver appropriately */    pDev->blkSubDev = NULL;    /* Since lower layer is not BLKDEV  */    pDev->cbioSubDev = cbio;    /* Storing the reference to the sub Device  */    pDev->isDriver = FALSE;   /* == FALSE since this is a CBIO TO CBIO layer */    pDev->pDc				= pDc ;  /* DPART_CTRL */    pDev->pFuncs 			= &cbioFuncs;    /* setup main fields */    pDc->subDev				= cbio ;    pDc->pPartDecodeFunc		= pPartDecodeFunc ;    pDc->nPart				= nPart ;    pDc->masterDev			= pDev ;    /* Now initialize the partition virtual devs */    for(p = 0; p < PART_MAX_ENTRIES; p++ )	{	CBIO_DEV_ID tmpDev = & ( pDc->vDev[ p ] );	/* inherit most fields from the primary handle */	*tmpDev = *pDev ;	tmpDev->cbioDesc        = "dpartCbio Partition Slave Device";	tmpDev->cbioPartIndx    = p;   /* partition # */	CBIO_READYCHANGED (tmpDev) = TRUE;	/* semaphore can be just copied, it has to be init'ed */        tmpDev->cbioMutex = semMCreate (dpartSemOptions);        if (NULL == tmpDev->cbioMutex)	    {	    DEBUG_MSG("Error Creating the device semaphore\n");	    pDev = NULL;	    break;	    }#ifdef _WRS_DOSFS2_VXWORKS_AE		/* init the handle */	handleInit (&tmpDev->cbioHandle, handleTypeCbioHdl);#endif  /* _WRS_DOSFS2_VXWORKS_AE */	/* these will be filled later from actual geometry */	tmpDev->cbioParams.nBlocks	= 0 ;	tmpDev->cbioParams.blockOffset	= 0 ;	}    DEBUG_MSG("dpartDevCreate: handle dev %x subDev %x\n", pDev, cbio );    /* return device handle */    return( pDev );    }/********************************************************************************* dpartPartGet - retrieve handle for a partition** This function retrieves a CBIO handle into a particular partition* of a partitioned device. This handle is intended to be used with* dosFsDevCreate().** RETURNS: CBIO_DEV_ID or NULL if partition is out of range, or* <masterHandle> is invalid.** SEE ALSO: dosFsDevCreate()*/CBIO_DEV_ID dpartPartGet    (    CBIO_DEV_ID masterHandle,	/* CBIO handle of the master partition */    int partNum			/* partition number from 0 to nPart */    )    {    if(OK != cbioDevVerify( masterHandle))	{	return NULL;	}    if( partNum >= masterHandle->pDc->nPart )	{	errno = EINVAL;	return NULL;	}    return ( & masterHandle->pDc->vDev[ partNum ] );    }/********************************************************************************* dpartShow - show current parameters of the RAM disk device** NOMANUAL*/STATUS dpartShow( CBIO_DEV_ID dev, int verb )    {    DPART_CTRL * pDc ;    int pn ;    if( (OK != cbioDevVerify (dev)))	{	DEBUG_MSG("dpartShow: invalid handle\n");	return ERROR;	}    pDc = dev->pDc ;    if( TRUE == cbioRdyChgdGet (dev))	dev->pFuncs->cbioDevIoctl( dev, CBIO_RESET, 0);    if( dev->cbioPartIndx == (u_long)NONE )	printf("  Device %#lx is Master handle, Partition Table:\n",		(u_long) dev);    else	printf("  Device %#lx is partition %ld, Partition Table:\n",		(u_long) dev, dev->cbioPartIndx );    for( pn = 0; pn < pDc->nPart ; pn ++ )	{	printf("  #%ld: from %ld to %ld (%ld blocks)\n",		pDc->vDev[ pn ].cbioPartIndx,		(block_t) pDc->vDev[ pn ].cbioParams.blockOffset,		pDc->vDev[ pn ].cbioParams.nBlocks + 			pDc->vDev[ pn ].cbioParams.blockOffset,		pDc->vDev[ pn ].cbioParams.nBlocks );	}    printf("  master dev %#lx, subordinate dev %#lx, with total %ld blocks\n",	(u_long) pDc->masterDev, (u_long) pDc->subDev,	pDc->subDev->cbioParams.nBlocks );    return OK;    }/* End of File */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国内一区二区三区| 国产精品私人影院| 国产肉丝袜一区二区| 国产精品美女久久久久久久久久久| 亚洲视频在线一区观看| 亚洲超丰满肉感bbw| 国产精品一区二区在线看| 91麻豆免费观看| 欧美一二三四在线| 国产精品第一页第二页第三页| 亚洲电影在线播放| 国产成人av网站| 欧美精品久久久久久久多人混战| 国产欧美视频在线观看| 性做久久久久久免费观看欧美| 国产激情一区二区三区桃花岛亚洲| 在线一区二区视频| 久久精品一区二区| 三级亚洲高清视频| 99视频超级精品| 欧美tickling挠脚心丨vk| 亚洲免费观看高清在线观看| 美女性感视频久久| 欧美伊人精品成人久久综合97| 久久亚洲捆绑美女| 亚洲成人你懂的| 成人免费不卡视频| 欧美videossexotv100| 一区二区不卡在线播放 | 欧美日韩性生活| 久久精品一区二区三区四区| 日韩中文字幕麻豆| 97久久精品人人做人人爽50路| 日韩欧美国产一二三区| 亚洲黄色在线视频| 豆国产96在线|亚洲| 91精品国产综合久久久久久久| 亚洲天堂成人网| 国产一区二区免费看| 欧美日韩你懂的| 亚洲精品视频免费看| 国产精品自拍三区| 日韩免费高清电影| 亚洲国产日产av| 91香蕉视频在线| 中文字幕欧美日本乱码一线二线| 男女激情视频一区| 欧美视频完全免费看| 亚洲乱码国产乱码精品精98午夜 | 欧美极品另类videosde| 人禽交欧美网站| 欧美乱妇一区二区三区不卡视频| 国产亚洲女人久久久久毛片| 国产 日韩 欧美大片| 欧美一区二区三区在| 亚洲国产精品一区二区久久| 99国产精品久久久久久久久久| 国产欧美一区二区在线| 韩国成人福利片在线播放| 在线成人免费观看| 亚洲aⅴ怡春院| 欧美性高清videossexo| 亚洲男人的天堂网| 91片黄在线观看| 自拍偷拍亚洲综合| 成人av在线播放网址| 欧美国产成人精品| 国产白丝网站精品污在线入口| 九一九一国产精品| 制服丝袜亚洲网站| 日韩经典一区二区| 欧美一区二区三区播放老司机| 日韩中文字幕av电影| 欧美日本在线观看| 日韩av在线发布| 日韩欧美亚洲一区二区| 国内精品在线播放| 国产一区二区福利| 成人看片黄a免费看在线| 26uuu久久综合| 国产一区二区在线视频| 日韩精品一区二区三区在线播放 | a4yy欧美一区二区三区| 国产精品高潮呻吟久久| 成人av在线看| 亚洲黄色性网站| 欧美日本在线播放| 久久激五月天综合精品| 亚洲精品在线免费观看视频| 国产精品一区一区三区| 国产精品乱码久久久久久| 成人av动漫在线| 亚洲麻豆国产自偷在线| 欧美日韩一区 二区 三区 久久精品| 午夜国产精品一区| 日韩三级av在线播放| 国产一区二区主播在线| 综合久久一区二区三区| 欧美日韩国产高清一区二区三区| 日本视频免费一区| 久久久久久久av麻豆果冻| 波多野结衣中文字幕一区 | 在线观看亚洲成人| 日韩国产在线观看| 久久久777精品电影网影网| 99久久久精品| 天天影视色香欲综合网老头| 亚洲精品在线观看视频| www.亚洲激情.com| 亚洲成人精品一区二区| 欧美精品一区二| 91免费精品国自产拍在线不卡| 日韩 欧美一区二区三区| 久久综合色播五月| 91亚洲精品久久久蜜桃网站| 午夜欧美一区二区三区在线播放| 精品国产乱码久久久久久老虎| 成人黄色777网| 午夜国产精品一区| 亚洲国产高清aⅴ视频| 在线看一区二区| 激情久久五月天| 亚洲黄一区二区三区| 日韩欧美国产精品一区| www.在线欧美| 久久精品久久综合| 亚洲男帅同性gay1069| 日韩免费高清视频| 在线免费观看视频一区| 精品一区二区三区免费播放| 一区二区中文视频| 欧美v国产在线一区二区三区| 色婷婷国产精品综合在线观看| 美女一区二区三区在线观看| 亚洲视频一二三| 久久综合久久综合亚洲| 欧美日韩在线直播| 成人听书哪个软件好| 麻豆精品一区二区av白丝在线| 成人欧美一区二区三区白人| 日韩欧美成人一区| 欧洲亚洲精品在线| 成人av网站大全| 久久av中文字幕片| 亚洲国产精品视频| 亚洲欧洲日韩综合一区二区| 日韩你懂的在线观看| 欧美亚洲尤物久久| youjizz国产精品| 国产在线播精品第三| 69av一区二区三区| 极品销魂美女一区二区三区| 亚洲自拍欧美精品| 国产精品天天摸av网| 日韩欧美在线123| 欧美日韩中文精品| 99re这里只有精品6| 国精产品一区一区三区mba视频| 亚洲sss视频在线视频| 加勒比av一区二区| 日本亚洲三级在线| 亚洲国产成人av网| 亚洲免费观看高清完整版在线观看| 国产日韩精品视频一区| 精品国产凹凸成av人导航| 欧美福利视频一区| 欧美性猛交xxxx黑人交| 日本道精品一区二区三区| 成人一区二区在线观看| 国产在线视视频有精品| 免费看欧美美女黄的网站| 亚洲成av人片一区二区| 亚洲成人精品一区| 午夜精品福利久久久| 亚洲va中文字幕| 日韩在线观看一区二区| 午夜激情一区二区三区| 婷婷综合另类小说色区| 午夜视频在线观看一区二区三区| 亚洲一区二区三区四区的| 一卡二卡三卡日韩欧美| 亚洲一区二区三区三| 亚洲午夜久久久久久久久电影院| 亚洲自拍与偷拍| 亚洲成在线观看| 日本va欧美va瓶| 麻豆精品国产91久久久久久| 九九热在线视频观看这里只有精品| 蜜桃91丨九色丨蝌蚪91桃色| 美腿丝袜亚洲综合| 国产一区二区三区四区五区美女| 国产一区二区三区免费观看| 国内一区二区在线| 国产999精品久久| 99精品视频中文字幕| 欧美亚洲国产一区二区三区va | 午夜视频一区在线观看| 青娱乐精品在线视频| 极品美女销魂一区二区三区免费| 国产一区在线不卡|