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

📄 testcx7.cxx

📁 ecos为实时嵌入式操作系统
💻 CXX
📖 第 1 页 / 共 3 页
字号:
    default:        CYG_TEST_FAIL( "bad switch" );        break;    }}voiddo_tidyup( WAITOP wait ){    ER ercd;    switch ( wait ) {    case SLEEP:    case DELAY:    case SEMGET:    case MSGGET:        // do nothing for all of those        break;    case FLAGWAIT:        // clear the flag variable        ercd = clr_flg( 1, 0 );        CYG_TEST_CHECK( E_OK == ercd, "clr_flg bad ercd, tidy vp" );        break;    case MEMFIXEDGET:        if ( NULL != vp ) {            ercd = rel_blf( 1, vp );            CYG_TEST_CHECK( E_OK == ercd, "rel_blf bad ercd, tidy vp" );        }        if ( NULL != vp1 ) {            ercd = rel_blf( 1, vp1 );            CYG_TEST_CHECK( E_OK == ercd, "rel_blf bad ercd, tidy vp1" );        }        if ( NULL != t2vp ) {            ercd = rel_blf( 1, t2vp );            CYG_TEST_CHECK( E_OK == ercd, "rel_blf bad ercd, tidy t2vp" );        }        break;    case MEMVARGET:        if ( NULL != vp ) {            ercd = rel_blk( 1, vp );            CYG_TEST_CHECK( E_OK == ercd, "rel_blk bad ercd, tidy vp" );        }        if ( NULL != vp1 ) {            ercd = rel_blk( 1, vp1 );            CYG_TEST_CHECK( E_OK == ercd, "rel_blk bad ercd, tidy vp1" );        }        if ( NULL != t2vp ) {            ercd = rel_blk( 1, t2vp );            CYG_TEST_CHECK( E_OK == ercd, "rel_blk bad ercd, tidy t2vp" );        }        break;    default:        CYG_TEST_FAIL( "bad switch" );        break;    }}voiddo_recreate( WAITOP wait ){ #ifdef CYGPKG_UITRON_SEMAS_CREATE_DELETE    static T_CSEM t_csem = { NULL, 0, 0 };#endif#ifdef CYGPKG_UITRON_MBOXES_CREATE_DELETE    static T_CMBX t_cmbx = { NULL, 0 };#endif#ifdef CYGPKG_UITRON_FLAGS_CREATE_DELETE    static T_CFLG t_cflg = { NULL, 0, 0 };#endif#ifdef CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE    static T_CMPF t_cmpf = { NULL, 0, 20, 95 };#endif#ifdef CYGPKG_UITRON_MEMPOOLVAR_CREATE_DELETE    static T_CMPL t_cmpl = { NULL, 0, 2000 };#endif    ER ercd = E_OK;    switch ( wait ) {    case SLEEP:    case DELAY:        // do nothing for all of those        break;    case SEMGET:#ifdef CYGPKG_UITRON_SEMAS_CREATE_DELETE        // create the semaphore        ercd = cre_sem( 1, &t_csem );        CYG_TEST_CHECK( E_OK == ercd, "cre_sem bad ercd" );#else        CYG_TEST_FAIL( "bad call to do_recreate SEMGET" );#endif        break;    case FLAGWAIT:#ifdef CYGPKG_UITRON_FLAGS_CREATE_DELETE        // create the flag        ercd = cre_flg( 1, &t_cflg );        CYG_TEST_CHECK( E_OK == ercd, "cre_sem bad ercd" );#else        CYG_TEST_FAIL( "bad call to do_recreate FLAGWAIT" );#endif        break;    case MSGGET:#ifdef CYGPKG_UITRON_MBOXES_CREATE_DELETE        // create the mbox        ercd = cre_mbx( 1, &t_cmbx );        CYG_TEST_CHECK( E_OK == ercd, "cre_sem bad ercd" );#else        CYG_TEST_FAIL( "bad call to do_recreate MSGGET" );#endif        break;    case MEMFIXEDGET:#ifdef CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE        // create the mempool        ercd = cre_mpf( 1, &t_cmpf );        CYG_TEST_CHECK( E_OK == ercd, "cre_sem bad ercd" );#else        CYG_TEST_FAIL( "bad call to do_recreate MEMFIXEDGET" );#endif        break;    case MEMVARGET:#ifdef CYGPKG_UITRON_MEMPOOLVAR_CREATE_DELETE        // create the mempool        ercd = cre_mpl( 1, &t_cmpl );        CYG_TEST_CHECK( E_OK == ercd, "cre_sem bad ercd" );#else        CYG_TEST_FAIL( "bad call to do_recreate MEMVARGET" );#endif        break;    default:        CYG_TEST_FAIL( "bad switch" );        break;    }    // this is just to use ercd to prevent warnings    CYG_TEST_CHECK( E_OK == ercd, "<blank> bad ercd" );}voiddo_signal( WAITOP wait ){    ER ercd;    switch ( wait ) {    case SLEEP:        // send a wakeup        ercd = wup_tsk( 2 );        CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );        break;    case DELAY:        // simply wait for task 2's delay to complete        ercd = dly_tsk( T1_WAIT );        CYG_TEST_CHECK( E_OK == ercd, "dly_tsk bad ercd" );        break;    case SEMGET:        // signal the semaphore        ercd = sig_sem( 1 );        CYG_TEST_CHECK( E_OK == ercd, "sig_sem bad ercd" );        break;    case FLAGWAIT:        // set the flag bits        ercd = set_flg( 1, 0xff );        CYG_TEST_CHECK( E_OK == ercd, "set_flg bad ercd" );        break;    case MSGGET:        // send a message        ercd = snd_msg( 1, msg );        CYG_TEST_CHECK( E_OK == ercd, "snd_msg bad ercd" );        break;    case MEMFIXEDGET:        // release a couple of blocks we allocated earlier.  I hope.        CYG_TEST_CHECK( NULL != vp,  "no allocated block to free" );        CYG_TEST_CHECK( NULL != vp1, "no allocated block to free1" );        ercd = rel_blf( 1, vp );        CYG_TEST_CHECK( E_OK == ercd, "rel_blf bad ercd" );        vp = NULL;        ercd = rel_blf( 1, vp1 );        CYG_TEST_CHECK( E_OK == ercd, "rel_blf bad ercd1" );        vp1 = NULL;        break;    case MEMVARGET:        // release a couple of blocks we allocated earlier.  I hope.        CYG_TEST_CHECK( NULL != vp,  "no allocated block to free" );        CYG_TEST_CHECK( NULL != vp1, "no allocated block to free1" );        ercd = rel_blk( 1, vp );        CYG_TEST_CHECK( E_OK == ercd, "rel_blk bad ercd" );        vp = NULL;        ercd = rel_blk( 1, vp1 );        CYG_TEST_CHECK( E_OK == ercd, "rel_blk bad ercd1" );        vp1 = NULL;        break;    default:        CYG_TEST_FAIL( "bad switch" );        break;    }}voiddo_delete( WAITOP wait ){    ER ercd = E_OK;    switch ( wait ) {    case SLEEP:    case DELAY:        CYG_TEST_FAIL( "bad call to do_delete( SLEEP or DELAY )" );        break;    case SEMGET:#ifdef CYGPKG_UITRON_SEMAS_CREATE_DELETE        // delete the semaphore        ercd = del_sem( 1 );        CYG_TEST_CHECK( E_OK == ercd, "del_sem bad ercd" );#else        CYG_TEST_FAIL( "bad call to do_delete( SEMGET )" );#endif        break;    case FLAGWAIT:#ifdef CYGPKG_UITRON_FLAGS_CREATE_DELETE        // delete the flag        ercd = del_flg( 1 );        CYG_TEST_CHECK( E_OK == ercd, "del_flg bad ercd" );#else        CYG_TEST_FAIL( "bad call to do_delete( FLAGWAIT )" );#endif        break;    case MSGGET:#ifdef CYGPKG_UITRON_MBOXES_CREATE_DELETE        // delete the mbox        ercd = del_mbx( 1 );        CYG_TEST_CHECK( E_OK == ercd, "del_mbx bad ercd" );#else        CYG_TEST_FAIL( "bad call to do_delete( MSGGET )" );#endif        break;    case MEMFIXEDGET:#ifdef CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE        // delete the mempool        ercd = del_mpf( 1 );        CYG_TEST_CHECK( E_OK == ercd, "del_mpf bad ercd" );#else        CYG_TEST_FAIL( "bad call to do_delete( MEMFIXEDGET )" );#endif        break;    case MEMVARGET:#ifdef CYGPKG_UITRON_MEMPOOLVAR_CREATE_DELETE        // delete the mempool        ercd = del_mpl( 1 );        CYG_TEST_CHECK( E_OK == ercd, "del_mpl bad ercd" );#else        CYG_TEST_FAIL( "bad call to do_delete( MEMVARGET )" );#endif        break;    default:        CYG_TEST_FAIL( "bad switch" );        break;    }    // this is just to use ercd to prevent warnings    CYG_TEST_CHECK( E_OK == ercd, "<blank> bad ercd" );} ERdo_wait( WAITOP wait, WAITTYPE type ){    switch ( wait ) {    case SLEEP:        return ( PLAIN == type ) ? slp_tsk() : tslp_tsk( T2_WAIT );    case DELAY:        return dly_tsk( T2_WAIT );      // forget the type    case SEMGET:        return ( PLAIN == type ) ? wai_sem( 1 ) : twai_sem( 1, T2_WAIT );    case FLAGWAIT:        return ( PLAIN == type ) ?            wai_flg( &scratch, 1, 0x55, TWF_ANDW ) :           twai_flg( &scratch, 1, 0xaa, TWF_ANDW, T2_WAIT );    case MSGGET:        return ( PLAIN == type ) ?            rcv_msg( &msg1, 1 ) :           trcv_msg( &msg1, 1, T2_WAIT );    case MEMFIXEDGET:        return ( PLAIN == type ) ?            get_blf( &t2vp, 1 ) :           tget_blf( &t2vp, 1, T2_WAIT );    case MEMVARGET:        return ( PLAIN == type ) ?            get_blk( &t2vp, 1, T2_MALLOC ) :           tget_blk( &t2vp, 1, T2_MALLOC, T2_WAIT );    default:        CYG_TEST_FAIL( "bad switch" );        break;    }    CYG_TEST_FAIL( "Bad wait in do_wait" );    return E_SYS;}voidcheck_waitstate( WAITOP wait, int waiting ){    ER ercd;    int waity = 0;    switch ( wait ) {    case SLEEP:    case DELAY:        return;                         // do nothing for these    case SEMGET: {        T_RSEM rsem;        ercd = ref_sem( &rsem, 1 );        waity = rsem.wtsk;        break;    }    case FLAGWAIT: {        T_RFLG rflg;        ercd = ref_flg( &rflg, 1 );        waity = rflg.wtsk;        break;    }    case MSGGET: {        T_RMBX rmbx;        ercd = ref_mbx( &rmbx, 1 );        waity = rmbx.wtsk;        break;    }    case MEMFIXEDGET: {        T_RMPF rmpf;        ercd = ref_mpf( &rmpf, 1 );        waity = rmpf.wtsk;        break;    }    case MEMVARGET: {        T_RMPL rmpl;        ercd = ref_mpl( &rmpl, 1 );        waity = rmpl.wtsk;        break;    }    default:        CYG_TEST_FAIL( "bad switch" );        break;    }    if ( waiting )        CYG_TEST_CHECK( waity, "Object has no task waiting!" );    else        CYG_TEST_CHECK( !waity, "Object had a task waiting!" );}// ========================================================================void task1( unsigned int arg ){    ER ercd;    WAITOP wait;    WAITTYPE type;    KILLOP kill;    CYG_TEST_INFO( "Task 1 running" );    ercd = chg_pri( 1, 8 );    CYG_TEST_CHECK( E_OK == ercd, "chg_pri bad ercd" );    for ( wait = START_WAITOP; wait < DONE_WAITOP ; wait++) {        for ( type = START_TYPE; type < DONE_TYPE   ; type++ ) {            for ( kill = START_KILLOP; kill < DONE_KILLOP ; kill++ ) {                

⌨️ 快捷键说明

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