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

📄 uit_func.inl

📁 ecos为实时嵌入式操作系统
💻 INL
📖 第 1 页 / 共 4 页
字号:
ERpget_blk ( VP *p_blk, ID mplid, INT blksz ){    Cyg_Mempool_Variable *p;    CYG_UITRON_CHECK_AND_GETP_MEMPOOLVAR( mplid, p );    CYG_UIT_PARAMCHECK_PTR( p_blk );    CYG_UIT_PARAMCHECK( blksz > 0, E_PAR );    VP result = (VP)p->try_alloc(blksz);    if ( ! result )        return E_TMOUT;    *p_blk = result;    return E_OK;}#ifdef CYGFUN_KERNEL_THREADS_TIMERCYG_UIT_FUNC_INLINEERtget_blk ( VP *p_blk, ID mplid, INT blksz, TMO tmout ){    Cyg_Mempool_Variable *p;    CYG_UITRON_CHECK_AND_GETP_MEMPOOLVAR( mplid, p );    CYG_UIT_PARAMCHECK_PTR( p_blk );    CYG_UIT_PARAMCHECK( blksz > 0, E_PAR );    CYG_UITRON_CHECK_DISPATCH_ENABLED_TMO( tmout );    // do this now for the case when no sleeping actually occurs    Cyg_Thread *self = Cyg_Thread::self();    self->set_wake_reason( Cyg_Thread::TIMEOUT );    VP result;    if ( TMO_FEVR == tmout )        result = p->alloc(blksz);    else if ( TMO_POL == tmout )        result = p->try_alloc(blksz);    else        result = p->alloc( blksz,            Cyg_Clock::real_time_clock->current_value() +            (cyg_tick_count)tmout );    if ( ! result )        CYG_UITRON_FAIL_RETURN_SELF( self );    *p_blk = result;    return E_OK;}#endif // CYGFUN_KERNEL_THREADS_TIMERCYG_UIT_FUNC_INLINEERrel_blk ( ID mplid, VP blk ){    Cyg_Mempool_Variable *p;    CYG_UITRON_CHECK_AND_GETP_MEMPOOLVAR( mplid, p );    CYG_UIT_PARAMCHECK_PTR( blk );    cyg_bool result = p->free( (cyg_uint8 *)blk, 0 );    if ( ! result )        return E_PAR;    return E_OK;}CYG_UIT_FUNC_INLINEERref_mpl ( T_RMPL *pk_rmpl, ID mplid ){    Cyg_Mempool_Variable *p;    CYG_UITRON_CHECK_AND_GETP_MEMPOOLVAR( mplid, p );    CYG_UIT_PARAMCHECK_PTR( pk_rmpl );    pk_rmpl->exinf = NADR;    pk_rmpl->wtsk = p->waiting();    pk_rmpl->frsz = p->get_freemem();        cyg_uint8 *base;    cyg_int32 size;    CYG_ADDRWORD maxfree;    p->get_arena(base, size, maxfree);    pk_rmpl->maxsz = maxfree;    return E_OK;}#endif // 0 < CYG_UITRON_NUM( MEMPOOLVAR )#endif // CYGPKG_UITRON_MEMPOOLVAR#ifdef CYGPKG_UITRON_MEMPOOLFIXED#if 0 < CYG_UITRON_NUM( MEMPOOLFIXED )#ifdef CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETECYG_UITRON_NEWFUNCTION( Cyg_Mempool_Fixed )CYG_UIT_FUNC_INLINEERcre_mpf ( ID mpfid, T_CMPF *pk_cmpf ){    ER ret = E_OK;    CYG_UIT_PARAMCHECK_PTR( pk_cmpf );    CYG_UITRON_CHECK_NO_OBJ_LOCK_SCHED( MEMPOOLFIXED, mpfid );    Cyg_Mempool_Fixed *p = &(CYG_UITRON_OBJS( MEMPOOLFIXED )[ mpfid - 1 ]);    cyg_uint8 *base;    cyg_int32 size;    CYG_ADDRWORD scratch;    // preserve the original memory area to use    p->get_arena( base, size, scratch );    if ( size < (pk_cmpf->blfsz * (pk_cmpf->mpfcnt + 1)) )        ret = E_NOMEM;    else if ( TA_TFIFO != pk_cmpf->mpfatr )        ret = E_RSATR;    else        CYG_UITRON_PTRS( MEMPOOLFIXED )[ mpfid - 1 ] =            new( p )            Cyg_Mempool_Fixed( base, size,                               (CYG_ADDRWORD)pk_cmpf->blfsz );    Cyg_Scheduler::unlock();    return ret;}CYG_UIT_FUNC_INLINEERdel_mpf ( ID mpfid ){    Cyg_Mempool_Fixed *p;    CYG_UITRON_CHECK_AND_GETP_MEMPOOLFIXED( mpfid, p );    Cyg_Scheduler::lock();    // deal with the race condition here    if ( p != CYG_UITRON_PTRS( MEMPOOLFIXED )[ mpfid - 1 ] ) {        Cyg_Scheduler::unlock();        return E_NOEXS;    }    CYG_UITRON_PTRS( MEMPOOLFIXED )[ mpfid - 1 ] = NULL;    p->~Cyg_Mempool_Fixed();    Cyg_Scheduler::unlock();    return E_OK;}#endif // CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETECYG_UIT_FUNC_INLINEERget_blf ( VP *p_blf, ID mpfid ){    Cyg_Mempool_Fixed *p;    CYG_UITRON_CHECK_AND_GETP_MEMPOOLFIXED( mpfid, p );    CYG_UIT_PARAMCHECK_PTR( p_blf );    CYG_UITRON_CHECK_DISPATCH_ENABLED();    VP result = (VP)p->alloc();    if ( ! result )        CYG_UITRON_FAIL_RETURN();    *p_blf = result;    return E_OK;}CYG_UIT_FUNC_INLINEERpget_blf ( VP *p_blf, ID mpfid ){    Cyg_Mempool_Fixed *p;    CYG_UITRON_CHECK_AND_GETP_MEMPOOLFIXED( mpfid, p );    CYG_UIT_PARAMCHECK_PTR( p_blf );    VP result = (VP)p->try_alloc();    if ( ! result )        return E_TMOUT;    *p_blf = result;    return E_OK;}#ifdef CYGFUN_KERNEL_THREADS_TIMERCYG_UIT_FUNC_INLINEERtget_blf ( VP *p_blf, ID mpfid, TMO tmout ){    Cyg_Mempool_Fixed *p;    CYG_UITRON_CHECK_AND_GETP_MEMPOOLFIXED( mpfid, p );    CYG_UIT_PARAMCHECK_PTR( p_blf );    CYG_UITRON_CHECK_DISPATCH_ENABLED_TMO( tmout );    // do this now for the case when no sleeping actually occurs    Cyg_Thread *self = Cyg_Thread::self();    self->set_wake_reason( Cyg_Thread::TIMEOUT );    VP result;    if ( TMO_FEVR == tmout )        result = p->alloc();    else if ( TMO_POL == tmout )        result = p->try_alloc();    else        result = p->alloc(            Cyg_Clock::real_time_clock->current_value() +            (cyg_tick_count)tmout );    if ( ! result )        CYG_UITRON_FAIL_RETURN_SELF( self );    *p_blf = result;    return E_OK;}#endif // CYGFUN_KERNEL_THREADS_TIMERCYG_UIT_FUNC_INLINEERrel_blf ( ID mpfid, VP blf ){    Cyg_Mempool_Fixed *p;    CYG_UITRON_CHECK_AND_GETP_MEMPOOLFIXED( mpfid, p );    CYG_UIT_PARAMCHECK_PTR( blf );    cyg_bool result = p->free( (cyg_uint8 *)blf );    if ( ! result )        return E_PAR;    return E_OK;}CYG_UIT_FUNC_INLINEERref_mpf ( T_RMPF *pk_rmpf, ID mpfid ){    Cyg_Mempool_Fixed *p;    CYG_UITRON_CHECK_AND_GETP_MEMPOOLFIXED( mpfid, p );    CYG_UIT_PARAMCHECK_PTR( pk_rmpf );    pk_rmpf->exinf = NADR;    pk_rmpf->wtsk = p->waiting();    cyg_int32 blocksize = p->get_blocksize();    pk_rmpf->frbcnt = p->get_freemem() / blocksize;    // these two are "implementation dependent" ie. eCos only    pk_rmpf->numbcnt = p->get_totalmem() / blocksize;    pk_rmpf->bsize = blocksize;    return E_OK;}        #endif // 0 < CYG_UITRON_NUM( MEMPOOLFIXED )#endif // CYGPKG_UITRON_MEMPOOLFIXED// - Time Management Functions        #ifdef CYGVAR_KERNEL_COUNTERS_CLOCKCYG_UIT_FUNC_INLINEERset_tim ( SYSTIME *pk_tim ){    CYG_UIT_PARAMCHECK_PTR( pk_tim );    Cyg_Clock::real_time_clock->set_value( *pk_tim );    return E_OK;}CYG_UIT_FUNC_INLINEERget_tim ( SYSTIME *pk_tim ){    CYG_UIT_PARAMCHECK_PTR( pk_tim );    *pk_tim = Cyg_Clock::real_time_clock->current_value();    return E_OK;}#endif // CYGVAR_KERNEL_COUNTERS_CLOCK#ifdef CYGFUN_KERNEL_THREADS_TIMERCYG_UIT_FUNC_INLINEERdly_tsk ( DLYTIME dlytim ){    CYG_UIT_PARAMCHECK( 0 <= dlytim, E_PAR );    CYG_UITRON_CHECK_DISPATCH_ENABLED();    if ( 0 >= dlytim )        return E_OK;    Cyg_Thread *self = Cyg_Thread::self();    CYG_UITRON_CHECK_TASK_CONTEXT_SELF( self );    self->delay( dlytim );    if ( Cyg_Thread::DONE != self->get_wake_reason() )        CYG_UITRON_FAIL_RETURN_SELF( self );    return E_OK;}#endif // CYGFUN_KERNEL_THREADS_TIMER#ifdef CYGVAR_KERNEL_COUNTERS_CLOCK#ifdef CYGPKG_UITRON_CYCLICS#if 0 < CYG_UITRON_NUM( CYCLICS )CYG_UIT_FUNC_INLINEERdef_cyc ( HNO cycno, T_DCYC *pk_dcyc ){    // pk_dcyc->cycatr is ignored    // The only relevant attribute is TA_HLNG/TA_ASM.    // This can be ignored as assembler routines are defined to be    // more conservative with registers than the procedure call standard.    Cyg_Timer *p;    CYG_UITRON_CHECK_AND_GETHDLR( CYCLICS, cycno, p );#ifndef CYGSEM_UITRON_PARAMS_NULL_IS_GOOD_PTR    CYG_UIT_PARAMCHECK( NULL != pk_dcyc, E_PAR );#endif    if( NADR == pk_dcyc ) {        p->~Cyg_Timer();        return E_OK;    }    CYG_UIT_PARAMCHECK( 0 == (pk_dcyc->cycact & ~TCY_ON), E_PAR );    CYG_UIT_PARAMCHECK( 0 < pk_dcyc->cyctim, E_PAR );    p->initialize(        Cyg_Clock::real_time_clock,        (cyg_alarm_fn *)pk_dcyc->cychdr,        (CYG_ADDRWORD)pk_dcyc->exinf,        Cyg_Clock::real_time_clock->current_value() + pk_dcyc->cyctim,        pk_dcyc->cyctim,        pk_dcyc->cycact);    return E_OK;}CYG_UIT_FUNC_INLINEERact_cyc ( HNO cycno, UINT cycact ){    Cyg_Timer *p;    CYG_UITRON_CHECK_AND_GETHDLR( CYCLICS, cycno, p );    CYG_UIT_PARAMCHECK( p->is_initialized(), E_NOEXS);    CYG_UIT_PARAMCHECK( 0 == (cycact & ~(TCY_ON | TCY_INI)), E_PAR );    p->activate(cycact);    return E_OK;}CYG_UIT_FUNC_INLINEERref_cyc ( T_RCYC *pk_rcyc, HNO cycno ){    Cyg_Timer *p;    cyg_tick_count t;    CYG_UITRON_CHECK_AND_GETHDLR( CYCLICS, cycno, p );    CYG_UIT_PARAMCHECK( p->is_initialized(), E_NOEXS);    CYG_UIT_PARAMCHECK_PTR( pk_rcyc );    pk_rcyc->exinf = (VP)p->get_data();    Cyg_Scheduler::lock();    t = p->get_trigger() - Cyg_Clock::real_time_clock->current_value();    Cyg_Scheduler::unlock();    pk_rcyc->lfttim = t;    pk_rcyc->cycact = (UINT)p->is_enabled();    return E_OK;}#endif // 0 < CYG_UITRON_NUM( CYCLICS )#endif // CYGPKG_UITRON_CYCLICS#ifdef CYGPKG_UITRON_ALARMS#if 0 < CYG_UITRON_NUM( ALARMS )CYG_UIT_FUNC_INLINEERdef_alm ( HNO almno, T_DALM *pk_dalm ){    Cyg_Timer *p;    cyg_tick_count t, now;    CYG_UITRON_CHECK_AND_GETHDLR( ALARMS, almno, p );#ifndef CYGSEM_UITRON_PARAMS_NULL_IS_GOOD_PTR    CYG_UIT_PARAMCHECK( NULL != pk_dalm, E_PAR );#endif    if( NADR == pk_dalm ) {        p->~Cyg_Timer();        return E_OK;    }    CYG_UIT_PARAMCHECK( 0 == (pk_dalm->tmmode & ~TTM_REL), E_PAR );    // make the time arithmetic safe without locking    now = Cyg_Clock::real_time_clock->current_value();    t = pk_dalm->almtim;    if( TTM_REL & pk_dalm->tmmode )        t += now;    CYG_UIT_PARAMCHECK( now < t, E_PAR );    p->initialize(Cyg_Clock::real_time_clock,                  (cyg_alarm_fn *)pk_dalm->almhdr,                  (CYG_ADDRWORD)pk_dalm->exinf,                  t, 0, Cyg_Timer::ENABLE);    return E_OK;}CYG_UIT_FUNC_INLINEERref_alm ( T_RALM *pk_ralm, HNO almno ){    Cyg_Timer *p;    cyg_tick_count t;    CYG_UITRON_CHECK_AND_GETHDLR( ALARMS, almno, p );    CYG_UIT_PARAMCHECK_PTR( pk_ralm );    CYG_UIT_PARAMCHECK( p->is_initialized(), E_NOEXS);    Cyg_Scheduler::lock();    t = p->get_trigger() - Cyg_Clock::real_time_clock->current_value();    Cyg_Scheduler::unlock();    pk_ralm->exinf  = (VP)p->get_data();    pk_ralm->lfttim = t;    return E_OK;}#endif // 0 < CYG_UITRON_NUM( ALARMS )#endif // CYGPKG_UITRON_ALARMS#endif // CYGVAR_KERNEL_COUNTERS_CLOCK        // - System Management Functions        CYG_UIT_FUNC_INLINEERget_ver ( T_VER *pk_ver ){    CYG_UIT_PARAMCHECK_PTR( pk_ver );    pk_ver->maker       = CYGNUM_UITRON_VER_MAKER;    pk_ver->id          = CYGNUM_UITRON_VER_ID;    pk_ver->spver       = CYGNUM_UITRON_VER_SPVER;    pk_ver->prver       = CYGNUM_UITRON_VER_PRVER;    pk_ver->prno[0]     = CYGNUM_UITRON_VER_PRNO_0;    pk_ver->prno[1]     = CYGNUM_UITRON_VER_PRNO_1;    pk_ver->prno[2]     = CYGNUM_UITRON_VER_PRNO_2;    pk_ver->prno[3]     = CYGNUM_UITRON_VER_PRNO_3;    pk_ver->cpu         = CYGNUM_UITRON_VER_CPU;    pk_ver->var         = CYGNUM_UITRON_VER_VAR;       return E_OK;}CYG_UIT_FUNC_INLINEERref_sys ( T_RSYS *pk_rsys ){    CYG_UIT_PARAMCHECK_PTR( pk_rsys );    if ( ! Cyg_Interrupt::interrupts_enabled() )        // CPU is locked        pk_rsys->sysstat = TSS_LOC;    else        pk_rsys->sysstat =            (0 == cyg_uitron_dis_dsp_old_priority) ? TSS_TSK : TSS_DDSP;    return E_OK;}CYG_UIT_FUNC_INLINEERref_cfg ( T_RCFG *pk_rcfg ){    CYG_UIT_PARAMCHECK_PTR( pk_rcfg );    // no details here yet    return E_OK;}#if 0 // NOT SUPPORTEDER      def_svc ( FN s_fncd, T_DSVC *pk_dsvc );ER      def_exc ( UINT exckind, T_DEXC *pk_dexc );#endif        // - Network Support Functions        #if 0 // NOT SUPPORTEDER      nrea_dat ( INT *p_reasz, VP dstadr, NODE srcnode, VP srcadr,               INT datsz );ER      nwri_dat ( INT *p_wrisz, NODE dstnode, VP dstadr, VP srcadr,               INT datsz );ER      nget_nod ( NODE *p_node );ER      nget_ver ( T_VER *pk_ver, NODE node );#endif// ========================================================================#endif // CYGPKG_UITRON#endif // CYGPRI_UITRON_FUNCS_HERE_AND_NOW#endif // CYGONCE_COMPAT_UITRON_UIT_FUNC_INL//EOF uit_func.inl

⌨️ 快捷键说明

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