Exemplo n.º 1
0
bool testCacheExample() {
  char* empty_string = "";
  char* hello = "Hello world!";
  char* helloAgain = "Hello world!";
  char* goodbye = "Goodbye!";
  char* goodDay = "Good day!";

  Cache cache = cacheCreate(256, freeString, copyString, compareStrings, getFirstLetter);
  ASSERT_TEST(cache != NULL);
  ASSERT_TEST(cacheIsIn(cache, hello) == false);
  ASSERT_TEST(cachePush(cache, hello) == CACHE_SUCCESS);
  ASSERT_TEST(cacheIsIn(cache, helloAgain) == true);
  ASSERT_TEST(cachePush(cache, hello) == CACHE_ITEM_ALREADY_EXISTS);

  ASSERT_TEST(cachePush(cache, goodbye) == CACHE_SUCCESS);
  ASSERT_TEST(cachePush(cache, goodDay) == CACHE_SUCCESS);
  ASSERT_TEST(cachePush(cache, empty_string) == CACHE_SUCCESS);

  ASSERT_TEST(cacheIsIn(cache, empty_string) == true);
  ASSERT_TEST(cacheIsIn(cache, goodbye) == true);
  
  char* temp_ptr;
  temp_ptr = cacheExtractElementByKey(cache, 0);
  ASSERT_TEST(strcmp(temp_ptr, "") == 0);
  ASSERT_TEST(cacheIsIn(cache, empty_string) == false);
  ASSERT_TEST(cacheFreeElement(cache, goodbye) == CACHE_SUCCESS);
  ASSERT_TEST(cacheIsIn(cache, goodbye) == false);

  ASSERT_TEST(cacheClear(cache) == CACHE_SUCCESS);
  ASSERT_TEST(setGetFirst(cacheGetFirst(cache)) == NULL);

  free(temp_ptr);
  cacheDestroy(cache);
  return true;
}
Exemplo n.º 2
0
ThreadState::ThreadState(ProcessState &WithParent,
                         seec::trace::ThreadState &ForState)
: Parent(WithParent),
  UnmappedState(ForState),
  CallStack()
{
  cacheClear();
}
Exemplo n.º 3
0
// -------------------------------------------------------------------------------------------
void UnPackX::setCurrentEvent(u_int eventNumber)
{
        if (eventNumber==0xffffffff) return;
        cacheClear();
        if ((eventNumber>=firstEvent)  && (eventNumber<=lastEvent)) {
                currentEvent=eventNumber;
                currentIndexStruct=indexList[eventNumber-firstEvent];
                return;
        }
        cout << "UnPackX::setCurrentEvent: Corrupt event number: "<< eventNumber << endl;
}
Exemplo n.º 4
0
UnPackX::~UnPackX(){
        cacheClear();
        dataFile->close();
        delete dataFile;     dataFile=NULL;
        delete runHeader;    runHeader=NULL;
        delete moduleHeader; moduleHeader=NULL;
        delete eventHeader;  eventHeader=NULL;
        delete infoHeader;   infoHeader=NULL;
        delete indexHeader;  indexHeader=NULL;
        delete beamHeader;   beamHeader=NULL;
        delete hivoHeader;   hivoHeader=NULL;
}
Exemplo n.º 5
0
CCacheManager::~CCacheManager()
{
    delete []avability_L00_L03;
    delete []avability_L04_L08;
    delete []avability_L09_L13;
    delete []avability_SRTM;
    delete []avabilityTex_L00_L02;
    delete []avabilityTex_L03_L05;
    delete []avabilityTex_L06_L08;
    delete []avabilityTex_L09_L10;
    delete []stripIndexListNW;
    delete []stripIndexListNE;
    delete []stripIndexListSW;
    delete []stripIndexListSE;

    cacheClear(0);  // drop all unused terrains

    delete []cachedTerrainDataGroup_L00_L03;
    delete []cachedTerrainDataGroup_L04_L08;
    delete []cachedTerrainDataGroup_L09_L13;

    instance = 0;
}
Exemplo n.º 6
0
/*异步链式EDMA传输,上层模块注册中断处理程序,处理EDMA传输完成事件*/
s32 edmac_test_async_lli(enum edma_req_id req, u32 direction)
{
    edma_addr_t  edma_addr    = 0;
    s32         ret_id       = 0;
    s32         ret          = 0;
    u32      i            = 0;
    struct edma_cb *pstNode   = NULL;
    struct edma_cb *psttemp   = NULL;
    struct edma_cb *FirstNode   = NULL;

    edma_buff_init();
    /*创建链表*/
    pstNode = (struct edma_cb *)dma_alloc_coherent(NULL,(EDMA_TEST_LLI_NUM * sizeof(struct edma_cb)),
                                                                   &edma_addr, GFP_DMA|__GFP_WAIT);
    s_edma_alloc_address.s_alloc_virt_address = (u32)pstNode;
	s_edma_alloc_address.s_alloc_phys_address = (u32)edma_addr;
    if (NULL == pstNode)
    {
        hiedmac_trace(BSP_LOG_LEVEL_ERROR,"LII list init is failed!");
        edma_buff_exit();
    	return EDMA_MEMORY_ALLOCATE_ERROR;
    }

    FirstNode = pstNode;
    psttemp = pstNode;
    for (i = 0; i < EDMA_TEST_LLI_NUM; i++)
    {
        psttemp->lli = EDMA_SET_LLI(edma_addr + (i+1) * sizeof(struct edma_cb), ((i < EDMA_TEST_LLI_NUM - 1)?0:1));
        psttemp->config = stDmaLLI[i].ulConfig;
        psttemp->src_addr = stDmaLLI[i].ulSourAddr;
        psttemp->des_addr = stDmaLLI[i].ulDestAddr;
        psttemp->cnt0 = stDmaLLI[i].ulLength;
        psttemp->bindx = 0;
        psttemp->cindx = 0;
        psttemp->cnt1  = 0;

        psttemp++;
    }
    hiedmac_trace(BSP_LOG_LEVEL_DEBUG,"LII list init is success!");

    /*申请通道,注册通道中断回调函数*/
    ret_id = bsp_edma_channel_init(req, (channel_isr)edma_isr_sema_give, 0, EDMA_INT_DONE);
	if (ret_id < 0)
    {
        hiedmac_trace(BSP_LOG_LEVEL_ERROR,"---------ERROR ret_id = 0x%X\n\n",ret_id);
        return EDMA_CHANNEL_INVALID;
    }

    /*获取首节点寄存器地址*/
    psttemp = bsp_edma_channel_get_lli_addr((u32)ret_id);
    if (NULL == psttemp)
    {
        hiedmac_trace(BSP_LOG_LEVEL_ERROR,"---bsp_edma_channel_get_lli_addr FAILED !\n\n");
        bsp_edma_channel_free((u32)ret_id);
        return EDMA_CHANNEL_INVALID;
    }

    /*配置首节点寄存器*/
    psttemp->lli = FirstNode->lli;
    psttemp->config = FirstNode->config & 0xFFFFFFFE;
    psttemp->src_addr = FirstNode->src_addr;  /*物理地址*/
    psttemp->des_addr = FirstNode->des_addr;  /*物理地址*/
    psttemp->cnt0 = FirstNode->cnt0;
    psttemp->bindx = 0;
    psttemp->cindx = 0;
    psttemp->cnt1  = 0;
    /* * */
    cacheClear( DATA_CACHE, (void*)edma_buf_phys, (EDMA_TEST_LLI_NUM + 2) * EDMA_TEST_LLI_BLOCK_SIZE );

    /*启动EDMA传输后即返回,可通过查询通道是否busy来确定传输是否完成*/
    if (bsp_edma_channel_lli_async_start((u32)ret_id))
    {
        hiedmac_trace(BSP_LOG_LEVEL_ERROR,"bsp_edma_channel_lli_async_start FAILED!\n\n");
        dma_free_coherent(NULL,(EDMA_TEST_LLI_NUM * sizeof(struct edma_cb)),
                          (void*)s_edma_alloc_address.s_alloc_virt_address, edma_addr);
        edma_buff_exit();
        bsp_edma_channel_free((u32)ret_id);
        return EDMA_TRXFER_ERROR;
    }
    while(0==bsp_edma_channel_is_idle((u32) ret_id))
    {printf("a");}
    printf("\n");

    /*mdelay(200);*/
    bsp_edma_channel_free((u32)ret_id);

    /* Verify the transfer data */
    for( i = 0; i < EDMA_TEST_LLI_NUM; i++ )
    {
        u8* temp_dest = pucDest + i * EDMA_TEST_LLI_BLOCK_SIZE;
		ret = edma_verify_data( temp_dest, EDMA_TEST_LLI_BLOCK_SIZE, (i & 0x1) ? 0x3a : 0x6 );
        if( !ret )
        {
            break;
        }
        hiedmac_trace(BSP_LOG_LEVEL_DEBUG,"\rFirst Verify, d[0]=0x%X, d[1]=0x%X, d[2]=0x%X, d[3]=0x%X, d[4]=0x%X, d[5]=0x%X\r\n ",
               *((u8 *)temp_dest + 0 ),
               *((u8 *)temp_dest + 1 ),
               *((u8 *)temp_dest + 2 ),
               *((u8 *)temp_dest + 3 ),
               *((u8 *)temp_dest + 4 ),
               *((u8 *)temp_dest + 5 ) );
    }

    dma_free_coherent(NULL,(EDMA_TEST_LLI_NUM * sizeof(struct edma_cb)),
                          (void*)s_edma_alloc_address.s_alloc_virt_address, edma_addr);
    edma_buff_exit();

    if (ret)
    {
        hiedmac_trace(BSP_LOG_LEVEL_ERROR,"bsp_edma_channel_lli_start FAILED!\n");
        return EDMA_TRXFER_ERROR;
    }
    hiedmac_trace(BSP_LOG_LEVEL_CRIT,"===============EDMA_LLI_ASYNC_START_SUCCESS!\n");
    return EDMA_SUCCESS;
}
Exemplo n.º 7
0
/*M2M sync LLI EDMA trans . wait for the completion sem, do not need int handler */
s32 edmac_test_lli(enum edma_req_id req, u32 direction)
{
    edma_addr_t  edma_addr    = 0;
    s32         ret_id       = 0;
    s32         ret          = 0;
    u32      i            = 0;
    struct edma_cb *pstNode   = NULL;
    struct edma_cb *psttemp   = NULL;
    struct edma_cb *FirstNode   = NULL;

    edma_buff_init();
    /*build lli */
    pstNode = (struct edma_cb *)dma_alloc_coherent(NULL,(EDMA_TEST_LLI_NUM * sizeof(struct edma_cb)),
                                                                   &edma_addr, GFP_DMA|__GFP_WAIT);
    hiedmac_trace(BSP_LOG_LEVEL_DEBUG,"---------------edma_addr = 0x%X\n",edma_addr);
    s_edma_alloc_address.s_alloc_virt_address = (u32)pstNode;
	s_edma_alloc_address.s_alloc_phys_address = (u32)edma_addr;
    if (NULL == pstNode)
    {
        hiedmac_trace(BSP_LOG_LEVEL_ERROR,"LLI list init is failed!\n");
        edma_buff_exit();
    	return EDMA_MEMORY_ALLOCATE_ERROR;
    }

    FirstNode = pstNode;
    psttemp = pstNode;
    for (i = 0; i < EDMA_TEST_LLI_NUM; i++)
    {
        psttemp->lli = EDMA_SET_LLI(edma_addr + (i+1) * sizeof(struct edma_cb), ((i < EDMA_TEST_LLI_NUM - 1)?0:1));
        psttemp->config = stDmaLLI[i].ulConfig;
        psttemp->src_addr = stDmaLLI[i].ulSourAddr;/*physical address*/
        psttemp->des_addr = stDmaLLI[i].ulDestAddr;/*physical address*/
        psttemp->cnt0 = stDmaLLI[i].ulLength;
        psttemp->bindx = 0;
        psttemp->cindx = 0;
        psttemp->cnt1  = 0;

        psttemp++;
    }

    hiedmac_trace(BSP_LOG_LEVEL_DEBUG,"LII list init is success!\n");

    /*request the chan_id, and init the sem*/
    ret_id = bsp_edma_channel_init(req, NULL, 0, 0);
    if (ret_id < 0)
    {
        hiedmac_trace(BSP_LOG_LEVEL_ERROR,"-----------error ret_id = 0x%X\n\n",ret_id);
        return EDMA_CHANNEL_INVALID;
    }

    /*获取首节点寄存器地址*/
    psttemp = bsp_edma_channel_get_lli_addr((u32)ret_id);
    if (NULL == psttemp)
    {
        hiedmac_trace(BSP_LOG_LEVEL_ERROR,"---bsp_edma_channel_get_lli_addr failed!\n\n");
        bsp_edma_channel_free((u32)ret_id);
        return EDMA_CHANNEL_INVALID;
    }
    hiedmac_trace(BSP_LOG_LEVEL_DEBUG,"----------- edma_cb LLI = 0x%X!\n\n",(u32)psttemp);

    /*配置首节点寄存器*/
    psttemp->lli = FirstNode->lli;
    psttemp->config = FirstNode->config & 0xFFFFFFFE;
    psttemp->src_addr = FirstNode->src_addr;
    psttemp->des_addr = FirstNode->des_addr;
    psttemp->cnt0 = FirstNode->cnt0;
    psttemp->bindx = 0;
    psttemp->cindx = 0;
    psttemp->cnt1  = 0;

    /* * */
    cacheClear( DATA_CACHE, (void*)edma_buf_phys, (EDMA_TEST_LLI_NUM + 2) * EDMA_TEST_LLI_BLOCK_SIZE );

    /*启动EDMA传输,等待传输完成信号量释放后返回*/
    if (bsp_edma_channel_lli_start((u32)ret_id))
    {
        hiedmac_trace(BSP_LOG_LEVEL_ERROR,"bsp_edma_channel_lli_start FAILED!\n\n");
        dma_free_coherent(NULL,(EDMA_TEST_LLI_NUM * sizeof(struct edma_cb)),
                            (void*)s_edma_alloc_address.s_alloc_virt_address, edma_addr);
        edma_buff_exit();
        bsp_edma_channel_free((u32)ret_id);
        return EDMA_TRXFER_ERROR;
    }
    taskDelay(10);
    while(0==bsp_edma_channel_is_idle((u32) ret_id))
    {printf("a");}
    printf("a\n");
    /* Verify the transfer data */
    for( i = 0; i < EDMA_TEST_LLI_NUM; i++ )
    {
        u8* temp_dest = pucDest + i * EDMA_TEST_LLI_BLOCK_SIZE;
		ret = edma_verify_data( temp_dest, EDMA_TEST_LLI_BLOCK_SIZE, (i & 0x1) ? 0x3a : 0x6 );
        if( !ret )
        {
            break;
        }
        hiedmac_trace(BSP_LOG_LEVEL_DEBUG,"\rFirst Verify, d[0]=0x%X, d[1]=0x%X, d[2]=0x%X, d[3]=0x%X, d[4]=0x%X, d[5]=0x%X\r\n ",
               *((u8 *)temp_dest + 0 ),
               *((u8 *)temp_dest + 1 ),
               *((u8 *)temp_dest + 2 ),
               *((u8 *)temp_dest + 3 ),
               *((u8 *)temp_dest + 4 ),
               *((u8 *)temp_dest + 5 ));
    }

     /*保证传完数据以后再释放内存*/
    dma_free_coherent(NULL,(EDMA_TEST_LLI_NUM * sizeof(struct edma_cb)),
                            (void*)s_edma_alloc_address.s_alloc_virt_address, edma_addr);
    edma_buff_exit();

    bsp_edma_channel_free((u32)ret_id);
    if (ret)
    {
        hiedmac_trace(BSP_LOG_LEVEL_ERROR,"bsp_edma_channel_lli_start FAILED!\n\n");
        return EDMA_TRXFER_ERROR;
    }
    hiedmac_trace(BSP_LOG_LEVEL_CRIT,"=============== EDMA_LLI_START_SUCCESS!\n");
    return EDMA_SUCCESS;
}
Exemplo n.º 8
0
/*异步EDMA传输,上层模块查询EDMA传输是否结束*/
s32 edmac_test_channel_async(enum edma_req_id req, u32 direction)
{
    s32    ret_id = 0;
    u32 bur_width = 2;
    u32 bur_len = 3;
    u32 ask_is_idle_loop = 0;

    u32 byte_len = EDMA_M2M_TEST_LENGHT;
    char *temp = NULL;
	s32 count = 0;
    if ((NULL == src_buf) || (NULL == des_buf))
    {
        hiedmac_trace(BSP_LOG_LEVEL_ERROR,"-----------edma test not inited \n\n");
        return EDMA_FAIL;
    }

	temp = src_buf;
	while (count < EDMA_M2M_TEST_LENGHT)
	{
		*temp++ = 'a' + count%20;
		++count;
	}
	src_buf[EDMA_M2M_TEST_LENGHT - 1]='\0';

    temp = des_buf;
    count = 0;
    while (count < EDMA_M2M_TEST_LENGHT)
	{
		*temp++ = 'c' + count%20;
		++count;
	}
	des_buf[EDMA_M2M_TEST_LENGHT - 1]='\0';
    hiedmac_trace(BSP_LOG_LEVEL_DEBUG,"---src_buf =%c%c%c%c%c%c%c\n",  *((char*)src_buf + 0),
                    *((char*)src_buf + 1), *((char*)src_buf + 2), *((char*)src_buf + 3),
                    *((char*)src_buf + 4), *((char*)src_buf + 5), *((char*)src_buf + 6));
    hiedmac_trace(BSP_LOG_LEVEL_DEBUG,"---des_buf =%c%c%c%c%c%c%c\n",  *((char*)des_buf + 0),
                    *((char*)des_buf + 1), *((char*)des_buf + 2), *((char*)des_buf + 3),
                    *((char*)des_buf + 4), *((char*)des_buf + 5), *((char*)des_buf + 6));
    ret_id = bsp_edma_channel_init(req, NULL, 0, 0);
    if (ret_id < 0)
    {
        hiedmac_trace(BSP_LOG_LEVEL_ERROR,"-----------ERROE ret_id = 0x%X\n\n",ret_id);
        return EDMA_CHANNEL_INVALID;
    }

    /* set config reg */
    if (bsp_edma_channel_set_config((u32)ret_id, direction, bur_width, bur_len))
    {
        hiedmac_trace(BSP_LOG_LEVEL_ERROR,"----------bsp_edma_channel_set_config FAILED!\n\n");
        bsp_edma_channel_free((u32)ret_id);
        return EDMA_CONFIG_ERROR;
    }
    /* ** */
    cacheClear( DATA_CACHE, (void*)edma_src_addr, EDMA_M2M_TEST_LENGHT * sizeof(char*));
    cacheClear( DATA_CACHE, (void*)edma_des_addr, EDMA_M2M_TEST_LENGHT * sizeof(char*));

    if (bsp_edma_channel_async_start((u32)ret_id, (u32)edma_src_addr, (u32)edma_des_addr, byte_len))
    {
        hiedmac_trace(BSP_LOG_LEVEL_ERROR,"----------bsp_edma_channel_async_start FAILED!\n\n");
        bsp_edma_channel_free((u32)ret_id);
        return EDMA_CONFIG_ERROR;
    }

    while(0==bsp_edma_channel_is_idle((u32) ret_id))
    {printf("a");}
    printf("\n");

    bsp_edma_channel_free((u32)ret_id);

    for (;;)
    {
        hiedmac_trace(BSP_LOG_LEVEL_DEBUG,"---------------pool channel async start!");
        if (!bsp_edma_channel_is_idle((u32)ret_id))
		{
            ask_is_idle_loop++;
            /*ssleep(2);*/
            if (ask_is_idle_loop < 0x100000)
            {
                continue;
            }
            else
            {
                hiedmac_trace(BSP_LOG_LEVEL_ERROR,"----------edma_trans_complete is TIMEOUT!");
                return EDMA_TRXFER_ERROR;
            }
        }
        else
        {
            hiedmac_trace(BSP_LOG_LEVEL_DEBUG,"edma_trans_complete-----ask_is_idle_loop=0x%X!\n\n",ask_is_idle_loop);
            if (edmac_verify_data_blk(src_buf,des_buf))
            {
                hiedmac_trace(BSP_LOG_LEVEL_ERROR,"----------EDMA_CHANNEL_ASYNC_TEST_FAILED!  verify \n\n");
                return EDMA_TRXFER_ERROR;
            }
            hiedmac_trace(BSP_LOG_LEVEL_CRIT,"===============EDMA_CHANNEL_ASYNC_TEST_SUCCESS!\n");
            return EDMA_SUCCESS;
        }
    }
}
Exemplo n.º 9
0
Config::Config(QWidget *parent,int index) : QDialog(parent)
{
    programPath = qApp->applicationDirPath() + "/";
    ui.setupUi(this);
    ui.tabConfiguration->setCurrentIndex(index);
    ui.radioManualProxy->setChecked(true);
    QRegExpValidator *proxyValidator = new QRegExpValidator(this);
    QRegExp validate("[0-9]*");
    proxyValidator->setRegExp(validate);
    ui.proxyPort->setValidator(proxyValidator);

    // build language list and sort alphabetically
    QStringList langs = findLanguageFiles();
    for(int i = 0; i < langs.size(); ++i)
        lang.insert(languageName(langs.at(i))
            + QString(" (%1)").arg(langs.at(i)), langs.at(i));
    lang.insert(DEFAULT_LANG, DEFAULT_LANG_CODE);
    QMap<QString, QString>::const_iterator i = lang.constBegin();
    while (i != lang.constEnd()) {
        ui.listLanguages->addItem(i.key());
        i++;
    }

    ComboBoxViewDelegate *delegate = new ComboBoxViewDelegate(this);
    ui.mountPoint->setItemDelegate(delegate);
#if !defined(DBG)
    ui.mountPoint->setEditable(false);
#endif

    ui.listLanguages->setSelectionMode(QAbstractItemView::SingleSelection);
    ui.proxyPass->setEchoMode(QLineEdit::Password);
    ui.treeDevices->setAlternatingRowColors(true);
    ui.listLanguages->setAlternatingRowColors(true);

    /* Explicitly set some widgets to have left-to-right layout */
    ui.treeDevices->setLayoutDirection(Qt::LeftToRight);
    ui.mountPoint->setLayoutDirection(Qt::LeftToRight);
    ui.proxyHost->setLayoutDirection(Qt::LeftToRight);
    ui.proxyPort->setLayoutDirection(Qt::LeftToRight);
    ui.proxyUser->setLayoutDirection(Qt::LeftToRight);
    ui.proxyPass->setLayoutDirection(Qt::LeftToRight);
    ui.listLanguages->setLayoutDirection(Qt::LeftToRight);
    ui.cachePath->setLayoutDirection(Qt::LeftToRight);
    ui.comboTts->setLayoutDirection(Qt::LeftToRight);

    this->setModal(true);

    connect(ui.buttonOk, SIGNAL(clicked()), this, SLOT(accept()));
    connect(ui.buttonCancel, SIGNAL(clicked()), this, SLOT(abort()));
    connect(ui.radioNoProxy, SIGNAL(toggled(bool)), this, SLOT(setNoProxy(bool)));
    connect(ui.radioSystemProxy, SIGNAL(toggled(bool)), this, SLOT(setSystemProxy(bool)));
    connect(ui.refreshMountPoint, SIGNAL(clicked()), this, SLOT(refreshMountpoint()));
    connect(ui.buttonAutodetect,SIGNAL(clicked()),this,SLOT(autodetect()));
    connect(ui.buttonCacheBrowse, SIGNAL(clicked()), this, SLOT(browseCache()));
    connect(ui.buttonCacheClear, SIGNAL(clicked()), this, SLOT(cacheClear()));
    connect(ui.configTts, SIGNAL(clicked()), this, SLOT(configTts()));
    connect(ui.configEncoder, SIGNAL(clicked()), this, SLOT(configEnc()));
    connect(ui.comboTts, SIGNAL(currentIndexChanged(int)), this, SLOT(updateTtsState(int)));
    connect(ui.treeDevices, SIGNAL(itemSelectionChanged()), this, SLOT(updateEncState()));
    connect(ui.testTTS,SIGNAL(clicked()),this,SLOT(testTts()));
    connect(ui.showDisabled, SIGNAL(toggled(bool)), this, SLOT(showDisabled(bool)));
    connect(ui.mountPoint, SIGNAL(editTextChanged(QString)), this, SLOT(updateMountpoint(QString)));
    connect(ui.mountPoint, SIGNAL(currentIndexChanged(int)), this, SLOT(updateMountpoint(int)));
    // delete this dialog after it finished automatically.
    connect(this, SIGNAL(finished(int)), this, SLOT(deleteLater()));

    setUserSettings();
    setDevices();
}