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

📄 kapi.cxx

📁 ecos为实时嵌入式操作系统
💻 CXX
📖 第 1 页 / 共 3 页
字号:
/* CPU level interrupt mask                                                  */externC void cyg_interrupt_disable(){    Cyg_Interrupt::disable_interrupts();}externC void cyg_interrupt_enable(){    Cyg_Interrupt::enable_interrupts();}/* Interrupt controller access                                               */externC void cyg_interrupt_mask(cyg_vector_t vector){    Cyg_Interrupt::mask_interrupt( (cyg_vector)vector);}externC void cyg_interrupt_unmask(cyg_vector_t vector){    Cyg_Interrupt::unmask_interrupt( (cyg_vector)vector);}externC void cyg_interrupt_acknowledge(cyg_vector_t vector){    Cyg_Interrupt::acknowledge_interrupt( (cyg_vector)vector);}externC void cyg_interrupt_configure(    cyg_vector_t        vector,         /* vector to configure               */    cyg_bool_t          level,          /* level or edge triggered           */    cyg_bool_t          up              /* rising/faling edge, high/low level*/){    Cyg_Interrupt::configure_interrupt( (cyg_vector)vector, level, up );}/*---------------------------------------------------------------------------*//* Counters, Clocks and Alarms                                               */externC void cyg_counter_create(    cyg_handle_t        *handle,        /* returned counter handle           */    cyg_counter         *counter        /* put counter here                  */){    CYG_ASSERT_SIZES( cyg_counter, Cyg_Counter );    Cyg_Counter *t = new((void *)counter) Cyg_Counter ();    t=t;    CYG_CHECK_DATA_PTR( handle, "Bad handle pointer" );    *handle = (cyg_handle_t)counter;}externC void cyg_counter_delete(cyg_handle_t counter){    ((Cyg_Counter *)counter)->~Cyg_Counter();}/* Return current value of counter                                           */externC cyg_tick_count_t cyg_counter_current_value(cyg_handle_t counter){    return ((Cyg_Counter *)counter)->current_value();}/* Set new current value                                                     */externC void cyg_counter_set_value(    cyg_handle_t        counter,    cyg_tick_count_t new_value){    ((Cyg_Counter *)counter)->set_value( new_value );}/* Advance counter by one tick                                               */externC void cyg_counter_tick(cyg_handle_t counter){    ((Cyg_Counter *)counter)->tick(); }/* Create a clock object                */externC void cyg_clock_create(    cyg_resolution_t    resolution,     /* Initial resolution                */    cyg_handle_t        *handle,        /* Returned clock handle             */    cyg_clock           *clock          /* put clock here                    */){    CYG_ASSERT_SIZES( cyg_clock, Cyg_Clock );    Cyg_Clock::cyg_resolution res;    res.dividend = resolution.dividend;    res.divisor  = resolution.divisor;    Cyg_Clock *t = new((void *)clock) Cyg_Clock ( res );    t=t;    CYG_CHECK_DATA_PTR( handle, "Bad handle pointer" );    *handle = (cyg_handle_t)clock;}externC void cyg_clock_delete(cyg_handle_t clock){    ((Cyg_Clock *)clock)->~Cyg_Clock();}/* convert a clock handle to a counter handle so we can use the              *//* counter API on it.                                                        */externC void cyg_clock_to_counter(    cyg_handle_t        clock,    cyg_handle_t        *counter){    CYG_CHECK_DATA_PTR( counter, "Bad counter handle pointer" );    *counter = (cyg_handle_t)(Cyg_Counter *)clock;}externC void cyg_clock_set_resolution(    cyg_handle_t        clock,    cyg_resolution_t    resolution      /* New resolution                    */){    Cyg_Clock::cyg_resolution res;    res.dividend = resolution.dividend;    res.divisor  = resolution.divisor;    ((Cyg_Clock *)clock)->set_resolution( res );}externC cyg_resolution_t cyg_clock_get_resolution(cyg_handle_t clock){    Cyg_Clock::cyg_resolution res =        ((Cyg_Clock *)clock)->get_resolution();        cyg_resolution_t resolution;    resolution.dividend = res.dividend;    resolution.divisor  = res.divisor;    return resolution;}#ifdef CYGVAR_KERNEL_COUNTERS_CLOCKexternC cyg_handle_t cyg_real_time_clock(void){    return (cyg_handle_t)Cyg_Clock::real_time_clock;}externC cyg_tick_count_t cyg_current_time(void){    return Cyg_Clock::real_time_clock->current_value();}#endifexternC void cyg_alarm_create(    cyg_handle_t        counter,        /* Attached to this counter          */    cyg_alarm_t         *alarmfn,       /* Call-back function                */    cyg_addrword_t      data,           /* Call-back data                    */    cyg_handle_t        *handle,        /* Returned alarm object             */    cyg_alarm           *alarm          /* put alarm here                    */){    CYG_ASSERT_SIZES( cyg_alarm, Cyg_Alarm );    Cyg_Alarm *t = new((void *)alarm) Cyg_Alarm (        (Cyg_Counter *)counter,        (cyg_alarm_fn *)alarmfn,        (CYG_ADDRWORD)data    );    t=t;    CYG_CHECK_DATA_PTR( handle, "Bad handle pointer" );    *handle = (cyg_handle_t)alarm;}/* Disable alarm, detach from counter and invalidate handles                 */externC void cyg_alarm_delete( cyg_handle_t alarm){    ((Cyg_Alarm *)alarm)->~Cyg_Alarm();}externC void cyg_alarm_initialize(    cyg_handle_t        alarm,    cyg_tick_count_t    trigger,        /* Absolute trigger time             */    cyg_tick_count_t    interval        /* Relative retrigger interval       */){    ((Cyg_Alarm *)alarm)->initialize(        (cyg_tick_count)trigger,        (cyg_tick_count)interval);}externC void cyg_alarm_enable( cyg_handle_t alarm ){    ((Cyg_Alarm *)alarm)->enable();}externC void cyg_alarm_disable( cyg_handle_t alarm ){    ((Cyg_Alarm *)alarm)->disable();}/*---------------------------------------------------------------------------*//* Mail boxes                                                                */externC void cyg_mbox_create(    cyg_handle_t        *handle,    cyg_mbox            *mbox){    CYG_ASSERT_SIZES( cyg_mbox, Cyg_Mbox );        Cyg_Mbox *t = new((void *)mbox) Cyg_Mbox();    t=t;    CYG_CHECK_DATA_PTR( handle, "Bad handle pointer" );    *handle = (cyg_handle_t)mbox;}externC void cyg_mbox_delete(cyg_handle_t mbox){    ((Cyg_Mbox *)mbox)->~Cyg_Mbox();}externC void *cyg_mbox_get(cyg_handle_t mbox){    return ((Cyg_Mbox *)mbox)->get();}#ifdef CYGFUN_KERNEL_THREADS_TIMERvoid *cyg_mbox_timed_get(    cyg_handle_t mbox,    cyg_tick_count_t abstime    ){    return ((Cyg_Mbox *)mbox)->get(abstime);}#endifexternC void *cyg_mbox_tryget(cyg_handle_t mbox){    return ((Cyg_Mbox *)mbox)->tryget();}externC void *cyg_mbox_peek_item(cyg_handle_t mbox){    return ((Cyg_Mbox *)mbox)->peek_item();}#ifdef CYGMFN_KERNEL_SYNCH_MBOXT_PUT_CAN_WAITexternC cyg_bool_t cyg_mbox_put(cyg_handle_t mbox, void *item){    return ((Cyg_Mbox *)mbox)->put(item);}#ifdef CYGFUN_KERNEL_THREADS_TIMERexternC cyg_bool_t cyg_mbox_timed_put(    cyg_handle_t mbox,    void *item,    cyg_tick_count_t abstime    ){    return ((Cyg_Mbox *)mbox)->put(item, abstime);}#endif#endifexternC cyg_bool_t cyg_mbox_tryput(cyg_handle_t mbox, void *item){    return ((Cyg_Mbox *)mbox)->tryput(item);}externC cyg_count32 cyg_mbox_peek(cyg_handle_t mbox){    return ((Cyg_Mbox *)mbox)->peek();}externC cyg_bool_t cyg_mbox_waiting_to_get(cyg_handle_t mbox){    return ((Cyg_Mbox *)mbox)->waiting_to_get();}externC cyg_bool_t cyg_mbox_waiting_to_put(cyg_handle_t mbox){    return ((Cyg_Mbox *)mbox)->waiting_to_put();}/*-----------------------------------------------------------------------*//* Memory pools                                                          *//* Create a variable size memory pool */externC void cyg_mempool_var_create(    void            *base,              /* base of memory to use for pool */    cyg_int32       size,               /* size of memory in bytes        */    cyg_handle_t    *handle,            /* returned handle of memory pool */    cyg_mempool_var *var                /* space to put pool structure in */    ){    CYG_ASSERT_SIZES( cyg_mempool_var, Cyg_Mempool_Variable );    Cyg_Mempool_Variable *t = new((void *)var) Cyg_Mempool_Variable (        (cyg_uint8 *)base,        size    );    t=t;    CYG_CHECK_DATA_PTR( handle, "Bad handle pointer" );    *handle = (cyg_handle_t)var;}/* Delete variable size memory pool */externC void cyg_mempool_var_delete(cyg_handle_t varpool){    ((Cyg_Mempool_Variable *)varpool)->~Cyg_Mempool_Variable();}/* Allocates a block of length size.  This waits if the memory is not   currently available.  */externC void *cyg_mempool_var_alloc(cyg_handle_t varpool, cyg_int32 size){    return ((Cyg_Mempool_Variable *)varpool)->alloc(size);}#ifdef CYGFUN_KERNEL_THREADS_TIMER/* Allocates a block of length size.  This waits for up to delay   ticks, if the memory is not already available.  NULL is returned if   no memory is available. */externC void *cyg_mempool_var_timed_alloc(    cyg_handle_t     varpool,    cyg_int32        size,    cyg_tick_count_t abstime){    return ((Cyg_Mempool_Variable *)varpool)->alloc(size, abstime);}#endif/* Allocates a block of length size.  NULL is returned if no memory is   available. */externC void *cyg_mempool_var_try_alloc(    cyg_handle_t varpool,    cyg_int32    size){    return ((Cyg_Mempool_Variable *)varpool)->try_alloc(size);}/* Frees memory back into variable size pool. */externC void cyg_mempool_var_free(cyg_handle_t varpool, void *p){    cyg_bool b;    b = ((Cyg_Mempool_Variable *)varpool)->free((cyg_uint8 *)p, 0);    CYG_ASSERT( b, "Bad free");}/* Returns true if there are any threads waiting for memory in the   given memory pool. */externC cyg_bool_t cyg_mempool_var_waiting(cyg_handle_t varpool){    return ((Cyg_Mempool_Variable *)varpool)->waiting();}/* Puts information about a variable memory pool into the structure   provided. */externC void cyg_mempool_var_get_info(    cyg_handle_t varpool,    cyg_mempool_info *info){

⌨️ 快捷键说明

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