⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testcxx.cxx

📁 ecos为实时嵌入式操作系统
💻 CXX
📖 第 1 页 / 共 2 页
字号:
        ercd = sus_tsk( 3 );    CYG_TEST_CHECK( E_OK == ercd, "sus_tsk bad ercd" );    intercom = 0;                       // bad data to T3    TSRELEASE();    ercd = rot_rdq( 0 );    CYG_TEST_CHECK( E_OK == ercd, "rot_rdq bad ercd" );    CYG_TEST_CHECK( 3 == intercount, "intercount != 3" );    ercd = sus_tsk( 3 );                // suspend AGAIN    CYG_TEST_CHECK( E_OK == ercd, "sus_tsk bad ercd" );    ercd = sus_tsk( 3 );                //     AND AGAIN    CYG_TEST_CHECK( E_OK == ercd, "sus_tsk bad ercd" );    TSRELEASE();    ercd = rot_rdq( 0 );    CYG_TEST_CHECK( E_OK == ercd, "rot_rdq bad ercd" );    CYG_TEST_CHECK( 3 == intercount, "intercount != 3" );    intercom = 3;                       // tell T3 to loop    TSRELEASE();    ercd = frsm_tsk( 3 );               // expect restart this time    CYG_TEST_CHECK( E_OK == ercd, "frsm_tsk bad ercd" );    ercd = rot_rdq( 0 );    CYG_TEST_CHECK( E_OK == ercd, "rot_rdq bad ercd" );    ICWAIT( 4 );    CYG_TEST_CHECK( 4 == intercount, "intercount != 4" );    TSRELEASE();    ercd = rsm_tsk( 3 );               // try it again    CYG_TEST_CHECK( E_OBJ == ercd, "rsm_tsk bad ercd !E_OBJ" );    ercd = rot_rdq( 0 );    CYG_TEST_CHECK( E_OK == ercd, "rot_rdq bad ercd" );    ICWAIT( 5 );    CYG_TEST_CHECK( 5 == intercount, "intercount != 5" );    TSRELEASE();    ercd = frsm_tsk( 3 );               // try it again    CYG_TEST_CHECK( E_OBJ == ercd, "frsm_tsk bad ercd !E_OBJ" );    ercd = rot_rdq( 0 );    CYG_TEST_CHECK( E_OK == ercd, "rot_rdq bad ercd" );    ICWAIT( 6 );    CYG_TEST_CHECK( 6 == intercount, "intercount != 6" );    CYG_TEST_INFO( "Command task 3 all loops stop" );    intercom = 4 + 8;    TSRELEASE();    ercd = rot_rdq( 0 );    CYG_TEST_CHECK( E_OK == ercd, "rot_rdq bad ercd" );    TSRELEASE();    ercd = rot_rdq( 0 );    CYG_TEST_CHECK( E_OK == ercd, "rot_rdq bad ercd" );    CYG_TEST_CHECK( 6 == intercount, "intercount != 6" );        intercom = intercount = 0;    CYG_TEST_PASS( "sus_tsk, rsm_tsk, frsm_tsk" );    CYG_TEST_INFO( "Testing sleep/wakeup stuff" );#ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS    ercd = wup_tsk( -6 );    CYG_TEST_CHECK( E_ID == ercd, "wup_tsk bad ercd !E_ID" );    ercd = wup_tsk( 99 );    CYG_TEST_CHECK( E_ID == ercd, "wup_tsk bad ercd !E_ID" );    ercd = can_wup( &scratch, -6 );    CYG_TEST_CHECK( E_ID == ercd, "can_wup bad ercd !E_ID" );    ercd = can_wup( &scratch, 99 );    CYG_TEST_CHECK( E_ID == ercd, "can_wup bad ercd !E_ID" );#ifndef CYGSEM_UITRON_PARAMS_NULL_IS_GOOD_PTR    ercd = can_wup( NULL, 2 );    CYG_TEST_CHECK( E_PAR == ercd, "can_wup bad ercd !E_PAR" );#endif        ercd = wup_tsk( 0 );                // not ourself    CYG_TEST_CHECK( E_ID == ercd, "wup_tsk bad ercd !E_ID" );    ercd = wup_tsk( 1 );                // ourself    CYG_TEST_CHECK( E_OBJ == ercd, "wup_tsk bad ercd !E_OBJ" );#endif // we can test bad param error returns#ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS    ercd = tslp_tsk( -6 );    CYG_TEST_CHECK( E_PAR == ercd, "tslp_tsk bad ercd !E_PAR" );#endif // we can test bad param error returns    ercd = tslp_tsk( TMO_POL );    CYG_TEST_CHECK( E_TMOUT == ercd, "tslp_tsk bad ercd !E_TMOUT" );    ercd = tslp_tsk( 5 );    CYG_TEST_CHECK( E_TMOUT == ercd, "tslp_tsk bad ercd !E_TMOUT" );#ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS    ercd = dis_dsp();    CYG_TEST_CHECK( E_OK == ercd, "dis_dsp bad ercd" );    ercd = tslp_tsk( TMO_FEVR );    CYG_TEST_CHECK( E_CTX == ercd, "tslp_tsk bad ercd !E_CTX" );     ercd = tslp_tsk( TMO_POL );    CYG_TEST_CHECK( E_CTX == ercd, "tslp_tsk bad ercd !E_CTX" );    ercd = tslp_tsk( 5 );    CYG_TEST_CHECK( E_CTX == ercd, "tslp_tsk bad ercd !E_CTX" );    ercd = ena_dsp();    CYG_TEST_CHECK( E_OK == ercd, "ena_dsp bad ercd" );    ercd = tslp_tsk( -6 );    CYG_TEST_CHECK( E_PAR == ercd, "tslp_tsk bad ercd !E_PAR" );#endif // we can test bad param error returns    ercd = tslp_tsk( TMO_POL );    CYG_TEST_CHECK( E_TMOUT == ercd, "tslp_tsk bad ercd !E_TMOUT" );    ercd = tslp_tsk( 5 );    CYG_TEST_CHECK( E_TMOUT == ercd, "tslp_tsk bad ercd !E_TMOUT" );    // drop task 4 pri to same as us    intercount = 0;    intercom = 1;                       // test plain slp_tsk    TSRELEASE();    ercd = chg_pri( 4, 5 );    CYG_TEST_CHECK( E_OBJ == ercd, "chg_pri bad ercd" );    ercd = dis_dsp();    CYG_TEST_CHECK( E_OK == ercd, "dis_dsp bad ercd" );    ercd = sta_tsk( 4, 77 );    CYG_TEST_CHECK( E_OK == ercd, "sta_tsk bad ercd" );    ercd = chg_pri( 4, 5 );    CYG_TEST_CHECK( E_OK == ercd, "chg_pri bad ercd" );    ercd = ena_dsp();    CYG_TEST_CHECK( E_OK == ercd, "ena_dsp bad ercd" );    ercd = wup_tsk( 4 );    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );    ercd = rot_rdq( 0 );    CYG_TEST_CHECK( E_OK == ercd, "rot_rdq bad ercd" );    ICWAIT( 1 );    CYG_TEST_CHECK( 1 == intercount, "intercount != 1" );    intercom = 2;                       // test tslp_tsk    TSRELEASE();    ercd = wup_tsk( 4 );    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );    ercd = rot_rdq( 0 );    CYG_TEST_CHECK( E_OK == ercd, "rot_rdq bad ercd" );    ICWAIT( 2 );    CYG_TEST_CHECK( 2 == intercount, "intercount != 2" );    intercom = 3;                       // test tslp_tsk    TSRELEASE();    ercd = rot_rdq( 0 );    CYG_TEST_CHECK( E_OK == ercd, "rot_rdq bad ercd" );    CYG_TEST_CHECK( 2 == intercount, "intercount != 2" );    intercom = 1;                       // test slp_tsk next...    ercd = dly_tsk( 20 );               // without a wup    CYG_TEST_CHECK( E_OK == ercd, "dly_tsk bad ercd" );    ICWAIT( 3 );    CYG_TEST_CHECK( 3 == intercount, "intercount != 3" );    intercom = 1;                       // ...test slp_tsk    TSRELEASE();    ercd = dly_tsk( 20 );               // without a wup (yet)    CYG_TEST_CHECK( E_OK == ercd, "dly_tsk bad ercd" );    CYG_TEST_CHECK( 3 == intercount, "intercount != 3" );    TSRELEASE();    ercd = tslp_tsk( 20 );              // yield again    CYG_TEST_CHECK( E_TMOUT == ercd, "tslp_tsk bad ercd !E_TMOUT" );    CYG_TEST_CHECK( 3 == intercount, "intercount != 3" );    TSRELEASE();    ercd = rot_rdq( 0 );                // and again    CYG_TEST_CHECK( E_OK == ercd, "rot_rdq bad ercd" );    CYG_TEST_CHECK( 3 == intercount, "intercount != 3" );    TSRELEASE();    ercd = wup_tsk( 4 );                // now issue a wup    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );    ercd = rot_rdq( 0 );                // and yield    CYG_TEST_CHECK( E_OK == ercd, "rot_rdq bad ercd" );    ICWAIT( 4 );    CYG_TEST_CHECK( 4 == intercount, "intercount != 4" );    intercom = 1;                       // test slp_tsk    TSRELEASE();    ercd = dly_tsk( 20 );               // without a wup (yet)    CYG_TEST_CHECK( E_OK == ercd, "dly_tsk bad ercd" );    CYG_TEST_CHECK( 4 == intercount, "intercount != 4" );    // this wup will restart it when we yield:    TSLOCK();    ercd = wup_tsk( 4 );                // now issue a wup    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );    // these will count up:    ercd = wup_tsk( 4 );                // now issue a wup    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );    ercd = wup_tsk( 4 );                // now issue a wup    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );    scratch = -1;    ercd = can_wup( &scratch, 4 );    CYG_TEST_CHECK( E_OK == ercd, "can_wup bad ercd" );    CYG_TEST_CHECK( 2 == scratch, "Cancelled wups not 2" );    CYG_TEST_CHECK( 4 == intercount, "intercount != 4" );    TSUNLOCK();    intercom = 4;                       // do nothing    TSRELEASE();    ercd = rot_rdq( 0 );                // and yield    CYG_TEST_CHECK( E_OK == ercd, "rot_rdq bad ercd" );    ICWAIT( 5 );    CYG_TEST_CHECK( 5 == intercount, "intercount != 5" );    TSRELEASE();    ercd = dly_tsk( 20 );               // let it do nothing    CYG_TEST_CHECK( E_OK == ercd, "dly_tsk bad ercd" );    TSRELEASE();    ercd = wup_tsk( 4 );                // now issue a wup    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );    TSRELEASE();    ercd = wup_tsk( 4 );                // now issue a wup    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );    TSRELEASE();    ercd = wup_tsk( 4 );                // now issue a wup    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );    TSRELEASE();    ercd = dly_tsk( 20 );               // lots of wups but no sleep    CYG_TEST_CHECK( E_OK == ercd, "dly_tsk bad ercd" );    CYG_TEST_CHECK( 5 == intercount, "intercount != 5" );    scratch = -1;    ercd = can_wup( &scratch, 4 );    CYG_TEST_CHECK( E_OK == ercd, "can_wup bad ercd" );    CYG_TEST_CHECK( 3 == scratch, "Cancelled wups not 3" );    // now check that they are cancelled by doing a wait again    intercom = 1;                       // test slp_tsk    TSRELEASE();    ercd = rot_rdq( 0 );                // still without a wup    CYG_TEST_CHECK( E_OK == ercd, "rot_rdq bad ercd" );    TSRELEASE();    ercd = rot_rdq( 0 );                // still without a wup    CYG_TEST_CHECK( E_OK == ercd, "rot_rdq bad ercd" );    intercom = 4;                       // do nothing next    TSRELEASE();    ICWAIT( 6 );    CYG_TEST_CHECK( 6 == intercount, "intercount != 6" );    ercd = rot_rdq( 0 );                // still without a wup    CYG_TEST_CHECK( E_OK == ercd, "rot_rdq bad ercd" );    CYG_TEST_CHECK( 6 == intercount, "intercount != 6" );    TSRELEASE();    ercd = wup_tsk( 4 );                // now issue a wup    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );    ercd = rot_rdq( 0 );                // it will run now    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );    TSRELEASE();    ercd = rot_rdq( 0 );                // it will run now    CYG_TEST_CHECK( E_OK == ercd, "rot_rdq bad ercd" );    ICWAIT( 7 );    CYG_TEST_CHECK( 7 == intercount, "intercount != 7" );    TSRELEASE();    intercom = 99;                      // exit, all done    ercd = rot_rdq( 0 );                // let it run    CYG_TEST_CHECK( E_OK == ercd, "rot_rdq bad ercd" );    ICWAIT( 8 );    CYG_TEST_CHECK( 8 == intercount, "intercount != 8" );    TSRELEASE();    ercd = rot_rdq( 0 );                // let it run    CYG_TEST_CHECK( E_OK == ercd, "rot_rdq bad ercd" );    CYG_TEST_CHECK( 8 == intercount, "intercount != 8" );       CYG_TEST_PASS( "wup_tsk, can_wup, slp_tsk, tslp_tsk" );#ifdef CYG_TEST_UITRON_TEST1_LOOPING    chg_pri( 1, 1 );    rot_rdq( 0 );    ter_tsk( 2 );    rot_rdq( 0 );    ter_tsk( 3 );    rot_rdq( 0 );    ter_tsk( 4 );    rot_rdq( 0 );    }#endif // CYG_TEST_UITRON_TEST1_LOOPING    CYG_TEST_EXIT( "All done" );    ext_tsk();}void task2( unsigned int arg ){    ER ercd;    CYG_TEST_PASS( "Task 2 running" );    ercd = get_tid( &scratch );    CYG_TEST_CHECK( E_OK == ercd, "get_tid bad ercd" );    CYG_TEST_CHECK( 2 == scratch, "tid not 2" );    if ( 99 != arg )        CYG_TEST_FAIL( "Task 2 arg not 99" );    ext_tsk();    CYG_TEST_FAIL( "Task 2 failed to exit" );}void task3( unsigned int arg ){    ER ercd;    TSLOCK();    CYG_TEST_PASS("Task3 running");    ercd = get_tid( &scratch );    CYG_TEST_CHECK( E_OK == ercd, "get_tid bad ercd" );    CYG_TEST_CHECK( 3 == scratch, "tid not 3" );    if ( 66 != arg )        CYG_TEST_FAIL( "Task 3 arg not 66" );    while ( 2 & intercom ) {        while ( 1 & intercom ) {            intercount++;            TSSTOP();            do {                TSUNLOCK();                ercd = rot_rdq( 0 );        // yield()                TSLOCK();                CYG_TEST_CHECK( E_OK == ercd, "rot_rdq 1 (task3) bad ercd" );            } while ( !TSGO() );        }        CYG_TEST_CHECK( 4 & intercom, "should not have got here yet 1" );        TSSTOP();        do {            TSUNLOCK();            ercd = rot_rdq( 0 );            // yield()            TSLOCK();            CYG_TEST_CHECK( E_OK == ercd, "rot_rdq 2 (task3) bad ercd" );        } while ( !TSGO() );    }    CYG_TEST_CHECK( 8 & intercom, "should not have got here yet 2" );        TSUNLOCK();    ext_tsk();    CYG_TEST_FAIL( "Task 3 failed to exit" );}void task4( unsigned int arg ){    ER ercd;    CYG_TEST_PASS("Task4 running");    ercd = get_tid( &scratch );    CYG_TEST_CHECK( E_OK == ercd, "get_tid bad ercd" );    CYG_TEST_CHECK( 4 == scratch, "tid not 4" );    if ( 77 != arg )        CYG_TEST_FAIL( "Task 4 arg not 77" );    while ( 1 ) {        switch ( intercom ) {        case 1:            ercd = slp_tsk();            CYG_TEST_CHECK( E_OK == ercd, "slp_tsk (task4) bad ercd" );            break;        case 2:            ercd = tslp_tsk( 10 );            CYG_TEST_CHECK( E_OK == ercd, "slp_tsk (task4) bad ercd" );            break;        case 3:            ercd = tslp_tsk( 10 );            CYG_TEST_CHECK( E_TMOUT == ercd,                            "slp_tsk (task4) bad ercd !E_TMOUT" );            break;        case 4:            // busily do nothing            while ( 4 == intercom ) {                ercd = rot_rdq( 0 );                CYG_TEST_CHECK( E_OK == ercd,                                "rot_rdq (task4 idle) bad ercd" );            }            break;        case 99:            goto out;        default:            CYG_TEST_FAIL( "Task 4 bad intercom" );            goto out;        }        intercount++;        TSSTOP();        do {            ercd = rot_rdq( 0 );            // yield()            CYG_TEST_CHECK( E_OK == ercd, "rot_rdq (task4) bad ercd" );        } while ( !TSGO() );    }out:    ext_tsk();    CYG_TEST_FAIL( "Task 4 failed to exit" );}#else // not enough (or too many) uITRON objects configured in#define N_A_MSG "not enough uITRON objects to run test"#endif // not enough (or too many) uITRON objects configured in#else  // not C++ and some C++ specific options enabled#define N_A_MSG "C++ specific options selected but this is C"#endif  // not C++ and some C++ specific options enabled#else // ! CYGVAR_KERNEL_COUNTERS_CLOCK   - can't test without it#define N_A_MSG "no CYGVAR_KERNEL_COUNTERS_CLOCK"#endif // ! CYGVAR_KERNEL_COUNTERS_CLOCK  - can't test without it#else  // ! CYGFUN_KERNEL_THREADS_TIMER   - can't test without it#define N_A_MSG "no CYGFUN_KERNEL_THREADS_TIMER"#endif // ! CYGFUN_KERNEL_THREADS_TIMER   - can't test without it#else  // ! CYGIMP_THREAD_PRIORITY        - can't test without it#define N_A_MSG "no CYGSEM_KERNEL_SCHED_MLQUEUE"#endif // ! CYGSEM_KERNEL_SCHED_MLQUEUE   - can't test without it#else  // ! CYGPKG_UITRON#define N_A_MSG "uITRON Compatibility layer disabled"#endif // CYGPKG_UITRON#ifdef N_A_MSGexternC voidcyg_start( void ){    CYG_TEST_INIT();    CYG_TEST_NA( N_A_MSG );}#endif // N_A_MSG defined ie. we are N/A.// EOF testcxx.cxx

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -