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

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

?? sgl.c

?? pci卡驅動開發程序.該程序采用DMA方式傳輸
?? C
?? 第 1 頁 / 共 2 頁
字號:
    desc.EnableBTERMInput = 0;
    desc.EnableIopBurst = 0;
    desc.EnableWriteInvalidMode = 0;
    desc.EnableDmaEOTPin = 0;
    desc.DmaStopTransferMode = AssertBLAST;
    desc.HoldIopAddrConst = 0;
    desc.HoldIopSourceAddrConst = 0;
    desc.HoldIopDestAddrConst = 0;
    desc.DemandMode = 0;
    desc.EnableTransferCountClear = 0;
    desc.DmaChannelPriority = Rotational; /* rotational priority */
    desc.WaitStates = 0;
    desc.IopBusWidth = 3; /* 32 bit bus */
    desc.Reserved1 = 0;
    desc.TholdForIopWrites = 0;
    desc.TholdForIopReads = 0;
    desc.TholdForPciWrites = 0;
    desc.TholdForPciReads = 0;
    desc.Reserved2 = 0;

    printf ("Opening channel...\n");

    if ((rc=PlxDmaSglChannelOpen(drvHandle, 
                               dmaChannel, 
                               &desc))
         != ApiSuccess)
    {
        printf ("\n\nError in opening channel 0.\n");
        DescribeErrorCode(rc, stdout);
        printf ("Press any key to exit.....");
        getch();
        return;
    }


    /*
     *  WARNING: A wrong IOP local offset may hang the system.  
     */
    printf("Please enter the address of the local buffer (in hex):");
    scanf( "%x", &localStartOffset );

    /*
     *  WARNING: A wrong IOP local size may also hang the system 
     */
    printf("Now enter the size in bytes of the buffers (in hex):");
    scanf( "%x", &totalSize );

    totalSize &= 0xFFFFFFFC;

    /* Allocate buffers */
    bufFrom = (PU32)calloc( totalSize, sizeof( U8 ) );
    if( bufFrom == NULL )
    {
        printf( "Can't allocate memory\n" );
        PlxDmaSglChannelClose(drvHandle, dmaChannel);
 		return;
    }
    bufTo = (PU32)calloc( totalSize, sizeof( U8 ) );
    if( bufTo == NULL )
    {
        printf( "Can't allocate memory\n" );
        free( bufFrom );    
        PlxDmaSglChannelClose(drvHandle, dmaChannel);
        return;
    }
    
    /* Initialize from buffer with a count */
    count = totalSize;
    buf = bufFrom;
    value = 0;
    while(count != 0)
    {
        count -= sizeof(U32);
        *buf++ = value++;
    }
    
    printf("Enter the number of transfer cycles (in dec):");
    scanf( "%d", &count );

    printf("\n Performing transfer continuously... \n");

    /* These parameters will never change */
    dmaData.Pci9080Dma.IopAddr           = localStartOffset;
    dmaData.Pci9080Dma.TransferCount     = totalSize;
    dmaData.Pci9080Dma.TerminalCountIntr = 0;

    /* Get the timer */
    startTime = GetTickCount();

    /* 
        Perform transfers until the number of cycles has been reached 
        or any key was pressed.
    */
    while(!kbhit() && (count-- != 0))
    {
        /* Increment each value of the from buffer */
        for(value = 0; value < (totalSize / 4); value ++)
        {
            bufFrom[value]++;
        }

        /* Set the variables members of the data structure */
        dmaData.Pci9080Dma.UserAddr        = (U32)bufFrom;
        dmaData.Pci9080Dma.IopToPciDma       = 0;

        /* Transfer from PCI to IOP */
        if( (rc=PlxDmaSglTransfer(drvHandle, 
                                    dmaChannel,
                                    DmaStart,
                                    &dmaData,
                                    FALSE ))
        != ApiSuccess)
        {
            printf ("\n\nError in PCI to IOP Sgl Dma.\n");
            DescribeErrorCode(rc, stdout);
            break;
        }

        /* Just print a back slash */
        printf("\\");

        /* Setup the transfer structure for the data return */
        dmaData.Pci9080Dma.UserAddr        = (U32)bufTo;
        dmaData.Pci9080Dma.IopToPciDma       = 1;

        /* Transfer from IOP back to PCI */
        if( (rc=PlxDmaSglTransfer(drvHandle, 
                                    dmaChannel,
                                    DmaStart,
                                    &dmaData,
                                    FALSE ))
        != ApiSuccess)
        {
            printf ("\n\nError in IOP to PCI Sgl Dma.\n");
            DescribeErrorCode(rc, stdout);
            break;
        }

        /* Compare the 2 buffers */
        for(value = 0; value < (totalSize / 4); value ++)
        {
            if (bufFrom[value] != bufTo[value])
            {
                printf("mismatch at 0x%08x\n", value * 4);
                break;
            }
        }

        /* Print a slash */
        printf("/");

    }

    /* Display some stats */
    transferTime = GetTickCount() - startTime;
    printf("\nNumber of cycles: %d\n", bufFrom[0]);
    printf("Transfer time (ms): %d\n", transferTime);
    printf("Total number of bytes transfered: 0x%08x\n", 2 * totalSize * bufFrom[0]);

    /* In the case the while was stopped by a keyboard hit, get the hit */
    if (kbhit())
        getch();

    free(bufFrom);
    free(bufTo);

    PlxDmaSglChannelClose(drvHandle, dmaChannel);
}


/******************************************************************************
 * Function: DescribeErrorCode
 *
 * Description: Print a message to the output file specified about the meaning
 *              of an error message.
 *
 ******************************************************************************/
VOID
DescribeErrorCode(RETURN_CODE rc, FILE *fp)
{
    typedef struct _SOMETHING
    {
        RETURN_CODE rc;
        char *String;
    }SOMETHING;

    SOMETHING errorStruct[] = 
    {
        ApiSuccess, "ApiSuccess",
        ApiFailed, "ApiFailed",
        ApiAccessDenied, "ApiAccessDenied",
        ApiDmaChannelUnavailable,"ApiDmaChannelUnavailable",
        ApiDmaChannelInvalid,"ApiDmaChannelInvalid",
        ApiDmaChannelTypeError,"ApiDmaChannelTypeError",
        ApiDmaInProgress,"ApiDmaInProgress",
        ApiDmaDone,"ApiDmaDone",
        ApiDmaPaused,"ApiDmaPaused",
        ApiDmaNotPaused,"ApiDmaNotPaused",
        ApiDmaCommandInvalid,"ApiDmaCommandInvalid",
        ApiDmaManReady,"ApiDmaManReady",
        ApiDmaManNotReady,"ApiDmaManNotReady",
        ApiDmaInvalidChannelPriority,"ApiDmaInvalidChannelPriority",
        ApiDmaManCorrupted,"ApiDmaManCorrupted",
        ApiDmaInvalidElementIndex,"ApiDmaInvalidElementIndex",
        ApiDmaNoMoreElements,"ApiDmaNoMoreElements",
        ApiDmaSglInvalid,"ApiDmaSglInvalid",
        ApiDmaSglQueueFull,"ApiDmaSglQueueFull",
        ApiNullParam,"ApiNullParam",
        ApiInvalidBusIndex,"ApiInvalidBusIndex",
        ApiUnsupportedFunction,"ApiUnsupportedFunction",
        ApiInvalidPciSpace,"ApiInvalidPciSpace",
        ApiInvalidIopSpace,"ApiInvalidIopSpace",
        ApiInvalidSize,"ApiInvalidSize",
        ApiInvalidAddress,"ApiInvalidAddress",
        ApiInvalidAccessType,"ApiInvalidAccessType",
        ApiMuNotReady,"ApiMuNotReady",
        ApiMuFifoEmpty,"ApiMuFifoEmpty",
        ApiMuFifoFull,"ApiMuFifoFull",
        ApiInvalidRegister,"ApiInvalidRegister",
        ApiDoorbellClearFailed,"ApiDoorbellClearFailed",
        ApiInvalidUserPin,"ApiInvalidUserPin",
        ApiInvalidUserState,"ApiInvalidUserState",
        ApiEepromNotPresent,"ApiEepromNotPresent",
        ApiEepromTypeNotSupported,"ApiEepromTypeNotSupported",
        ApiConfigAccessFailed,"ApiConfigAccessFailed",
        ApiInvalidDeviceInfo,"ApiInvalidDeviceInfo",
        ApiNoActiveDriver,"ApiNoActiveDriver",
        ApiInsufficientResources,"ApiInsufficientResources",
        ApiObjectAlreadyAllocated,"ApiObjectAlreadyAllocated",
        ApiAlreadyInitialized,"ApiAlreadyInitialized",
        ApiNotInitialized,"ApiNotInitialized",
        ApiBadConfigRegEndianMode,"ApiBadConfigRegEndianMode",
        ApiInvalidPowerState,"ApiInvalidPowerState",
        ApiPowerDown , "ApiPowerDown",
        ApiLastError , "ApiLastError"
    };
    SOMETHING *errorParser;

    errorParser = errorStruct;
    
    do
    {
        if (rc == errorParser->rc)
        {
            fprintf(fp, "Error code is %s\n", errorParser->String);
            break;
        }
        errorParser++;
    }while(errorParser->rc != ApiLastError);

    if ((errorParser->rc == ApiLastError) && (rc != ApiLastError))
        fprintf(fp, "Unknown error code\n");
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二区在线观看| 337p粉嫩大胆噜噜噜噜噜91av| 久久久久久久国产精品影院| 亚洲日本青草视频在线怡红院| 免费久久精品视频| 91在线精品一区二区| 精品粉嫩aⅴ一区二区三区四区| 亚洲精品免费电影| 成人黄色av电影| 日韩美女一区二区三区四区| 亚洲午夜久久久久| 色婷婷综合激情| 久久久午夜精品理论片中文字幕| 日韩vs国产vs欧美| 欧美性大战久久| 成人免费小视频| 成人免费看黄yyy456| 久久免费美女视频| 国产一区免费电影| 亚洲精品一线二线三线| 久久精品久久综合| 日韩精品综合一本久道在线视频| 亚洲成av人片www| 一本到一区二区三区| 亚洲免费观看高清完整版在线观看熊| 成人av在线电影| 国产精品国产三级国产a| 成人黄色a**站在线观看| 国产精品免费av| 97精品国产露脸对白| 亚洲人成7777| 色婷婷久久一区二区三区麻豆| 国产精品伦理在线| 99麻豆久久久国产精品免费优播| 欧美国产日韩亚洲一区| av高清久久久| 亚洲午夜精品网| 在线电影院国产精品| 日韩高清不卡一区| 日韩免费福利电影在线观看| 九九九久久久精品| 国产精品视频看| 成人av电影在线观看| 一个色在线综合| 欧美日本国产一区| 精品中文字幕一区二区| 国产欧美va欧美不卡在线| www.在线欧美| 亚洲香肠在线观看| 制服丝袜中文字幕亚洲| 国模一区二区三区白浆| 国产精品久久久久久亚洲毛片| 91视频国产资源| 香蕉成人啪国产精品视频综合网| 4438x亚洲最大成人网| 狠狠色丁香婷综合久久| 国产精品久久久久影视| 精品视频1区2区3区| 麻豆精品视频在线观看| 中文字幕精品一区| 欧美日韩国产一二三| 国产精品中文有码| 亚洲老妇xxxxxx| 欧美成人精品高清在线播放| av在线免费不卡| 男女激情视频一区| 国产精品人妖ts系列视频| 精品视频资源站| 国产很黄免费观看久久| 亚洲国产日韩综合久久精品| 久久亚洲精精品中文字幕早川悠里| 国产成人免费视频精品含羞草妖精| 亚洲综合视频在线观看| 国产日产欧美一区二区视频| 欧美三级在线视频| 成人午夜电影小说| 理论电影国产精品| 亚洲综合免费观看高清在线观看| 精品国产一区二区三区不卡| 日本高清免费不卡视频| 国产精品系列在线播放| 青青草97国产精品免费观看无弹窗版| 国产精品网曝门| 日韩欧美亚洲另类制服综合在线| 色综合欧美在线| 国产福利一区二区三区在线视频| 视频在线观看一区二区三区| 国产精品第四页| 久久综合九色综合97婷婷| 欧美日韩色综合| 91在线观看高清| 国产69精品久久久久777| 久久精品999| 免费观看91视频大全| 亚洲综合色视频| 综合精品久久久| 国产精品网站在线观看| 久久精品日产第一区二区三区高清版 | 久久日一线二线三线suv| 欧美无砖砖区免费| 91国模大尺度私拍在线视频| av资源站一区| av一二三不卡影片| proumb性欧美在线观看| 国产激情91久久精品导航| 国产精品自拍在线| 丰满少妇久久久久久久| 国产福利视频一区二区三区| 国产毛片精品一区| 国产在线视视频有精品| 极品少妇xxxx精品少妇偷拍 | 精品国产成人在线影院| 欧美一卡二卡在线| 日韩欧美一级在线播放| 欧美va亚洲va香蕉在线| 欧美xingq一区二区| 久久综合九色综合欧美亚洲| 久久美女高清视频| 国产精品免费观看视频| 亚洲天堂免费看| 亚洲国产精品久久久久秋霞影院| 一区二区三区日韩| 婷婷综合久久一区二区三区| 日韩成人免费在线| 精品一区二区三区在线观看 | 欧美精品日韩精品| 欧美一级黄色录像| 亚洲精品在线三区| 国产精品动漫网站| 亚洲成av人影院在线观看网| 麻豆国产一区二区| 国产a久久麻豆| 色婷婷亚洲综合| 日韩亚洲欧美综合| 中文字幕第一区第二区| 亚洲国产sm捆绑调教视频| 日韩电影在线免费| 国产精品99久久不卡二区| 色哟哟日韩精品| 日韩一区二区三区四区| 国产日韩欧美不卡在线| 亚洲一区在线看| 精品一区二区免费在线观看| eeuss鲁一区二区三区| 欧美酷刑日本凌虐凌虐| 久久蜜桃一区二区| 一二三四社区欧美黄| 国产在线精品免费| 91麻豆自制传媒国产之光| 欧美丰满嫩嫩电影| 国产精品不卡一区| 日韩国产精品久久久久久亚洲| 国产黄人亚洲片| 欧美一级专区免费大片| 最新不卡av在线| 狠狠色丁香久久婷婷综合_中| 在线观看一区二区精品视频| 久久美女高清视频| 日韩高清一级片| 色婷婷国产精品综合在线观看| 欧美高清一级片在线| 亚洲天天做日日做天天谢日日欢| 免费观看久久久4p| 欧美日韩一级视频| 国产精品国模大尺度视频| 另类小说图片综合网| 欧美日韩精品一区二区三区蜜桃| 久久精子c满五个校花| 免费av网站大全久久| 欧美在线短视频| 国产精品久久久爽爽爽麻豆色哟哟 | 免费在线观看成人| 欧美在线视频你懂得| 中文字幕日韩精品一区| 国产精品一品二品| 精品国产伦一区二区三区观看方式| 一区二区三区高清在线| 99久久国产综合精品女不卡| 久久久久久久久久久99999| 久久爱www久久做| 日韩一区二区在线看| 天天操天天色综合| 欧美在线制服丝袜| 一区二区三区四区激情| 色吊一区二区三区| 亚洲男同性恋视频| 91在线视频18| 中文字幕在线不卡| 91麻豆免费看片| 亚洲欧美日韩中文播放| av电影一区二区| 中文字幕日韩精品一区| 91亚洲资源网| 一区二区欧美国产| 欧美日韩在线免费视频| 亚洲国产成人高清精品| 欧美三级乱人伦电影| 亚洲成人一区二区| 777久久久精品| 精品综合久久久久久8888|