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

📄 uit_objs.cxx

📁 ecos为实时嵌入式操作系统
💻 CXX
字号:
//===========================================================================////      uit_objs.cxx////      uITRON static objects////===========================================================================//####COPYRIGHTBEGIN####//// -------------------------------------------// The contents of this file are subject to the Cygnus eCos Public License// Version 1.0 (the "License"); you may not use this file except in// compliance with the License.  You may obtain a copy of the License at// http://sourceware.cygnus.com/ecos// // Software distributed under the License is distributed on an "AS IS"// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the// License for the specific language governing rights and limitations under// the License.// // The Original Code is eCos - Embedded Cygnus Operating System, released// September 30, 1998.// // The Initial Developer of the Original Code is Cygnus.  Portions created// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved.// -------------------------------------------////####COPYRIGHTEND####//===========================================================================//#####DESCRIPTIONBEGIN####//// Author(s):   hmt// Contributors:        hmt// Date:        1998-03-13// Purpose:     uITRON static system objects// Description: ////####DESCRIPTIONEND####////===========================================================================#include <pkgconf/uitron.h>             // uITRON setup CYGNUM_UITRON_SEMAS                                        // CYGPKG_UITRON et al#ifdef CYGPKG_UITRON#include <cyg/compat/uitron/uit_objs.hxx>                                        // declarations of the objects                                        // we define below, and everything                                        // we need to specify them.#include <cyg/hal/hal_arch.h>           // for CYGNUM_HAL_STACK_SIZE_TYPICAL// ------------------------------------------------------------------------// Mboxes have no initializer.#ifdef CYGPKG_UITRON_MBOXES#if 0 < CYGNUM_UITRON_MBOXESCyg_Mbox                CYG_UITRON_DECL( MBOXES );#ifdef CYGPKG_UITRON_MBOXES_CREATE_DELETECyg_Mbox                *CYG_UITRON_DECL_PTRS( MBOXES );#endif#endif#endif // CYGPKG_UITRON_MBOXES// ------------------------------------------------------------------------// Flags have no initializer.#ifdef CYGPKG_UITRON_FLAGS#if 0 < CYGNUM_UITRON_FLAGSCyg_Flag                CYG_UITRON_DECL( FLAGS );#ifdef CYGPKG_UITRON_FLAGS_CREATE_DELETECyg_Flag                *CYG_UITRON_DECL_PTRS( FLAGS );#endif#endif#endif // CYGPKG_UITRON_FLAGS// ------------------------------------------------------------------------// Semaphores have an optional initializer.#ifdef CYGPKG_UITRON_SEMAS#if (0 < CYGNUM_UITRON_SEMAS) || \    defined( CYGDAT_UITRON_SEMA_INITIALIZERS )#ifndef CYGNUM_UITRON_SEMAS#error You must define CYGNUM_UITRON_SEMAS#endifCyg_Counting_Semaphore2 CYG_UITRON_DECL( SEMAS )#ifdef CYGDAT_UITRON_SEMA_INITIALIZERS// a Macro to ease the construction:#define CYG_UIT_SEMA( _count_  ) Cyg_Counting_Semaphore2( (cyg_count32)(_count_) )#ifdef CYGPKG_UITRON_SEMAS_CREATE_DELETE#define CYG_UIT_SEMA_NOEXS       Cyg_Counting_Semaphore2( (cyg_count32)    0     )#endif = {    CYGDAT_UITRON_SEMA_INITIALIZERS}#undef CYG_UIT_SEMA#ifdef CYGPKG_UITRON_SEMAS_CREATE_DELETE#undef CYG_UIT_SEMA_NOEXS#endif#endif // do we have initializers?; // the end of the declaration, with or without initializer#ifdef CYGPKG_UITRON_SEMAS_CREATE_DELETECyg_Counting_Semaphore2 *CYG_UITRON_DECL_PTRS( SEMAS );#endif#endif#endif // CYGPKG_UITRON_SEMAS// ------------------------------------------------------------------------// tasks MUST be initialized, you must have some.#ifndef CYGDAT_UITRON_TASK_EXTERNS#error You must define CYGDAT_UITRON_TASK_EXTERNS#endif#ifndef CYGDAT_UITRON_TASK_INITIALIZERS#error You must define CYGDAT_UITRON_TASK_INITIALIZERS#endif#ifndef CYGNUM_UITRON_TASKS#error You must define CYGNUM_UITRON_TASKS#endif// a Macro to ease the construction://      "name", priority, proc, stackbase, stacksize#define CYG_UIT_TASK( _name_, _prio_, _func_, _sb_, _ss_ ) \  Cyg_Thread(                           \        (CYG_ADDRWORD)(_prio_),         \        (_func_),                       \        (CYG_ADDRWORD)0,                \        _name_,                         \        (CYG_ADDRESS)(_sb_),            \        (cyg_ucount32)(_ss_) )#ifdef CYGPKG_UITRON_TASKS_CREATE_DELETE#define CYG_UIT_TASK_NOEXS( _name_, _sb_, _ss_ ) \  Cyg_Thread(                           \        (CYG_ADDRWORD)(CYG_SCHED_DEFAULT_INFO), \        (cyg_thread_entry *)(0),        \        (CYG_ADDRWORD)0,                \        _name_,                         \        (CYG_ADDRESS)(_sb_),            \        (cyg_ucount32)(_ss_) )#endif#ifdef CYGNUM_HAL_STACK_SIZE_TYPICAL# ifdef CYGNUM_UITRON_STACK_SIZE#  if CYGNUM_UITRON_STACK_SIZE < CYGNUM_HAL_STACK_SIZE_TYPICAL// then override the configured stack size#   undef CYGNUM_UITRON_STACK_SIZE#   define CYGNUM_UITRON_STACK_SIZE CYGNUM_HAL_STACK_SIZE_TYPICAL#  endif // CYGNUM_UITRON_STACK_SIZE < CYGNUM_HAL_STACK_SIZE_TYPICAL# endif // CYGNUM_UITRON_STACK_SIZE#endif // CYGNUM_HAL_STACK_SIZE_TYPICAL// declare the symbols used in the initializerCYGDAT_UITRON_TASK_EXTERNSCyg_Thread      CYG_UITRON_DECL( TASKS ) ={    CYGDAT_UITRON_TASK_INITIALIZERS};#undef CYG_UIT_TASK#ifdef CYGPKG_UITRON_TASKS_CREATE_DELETE#undef CYG_UIT_TASK_NOEXS#endif#ifdef CYGIMP_THREAD_PRIORITY// An ancillary array of priorities, for managing the "original" priocyg_prioritycyg_uitron_task_initial_priorities[ CYG_UITRON_NUM( TASKS ) ];#endif#ifdef CYGPKG_UITRON_TASKS_CREATE_DELETECyg_Thread              *CYG_UITRON_DECL_PTRS( TASKS );#endif// ------------------------------------------------------------------------// fixed memory pools MUST be initialized, IF you have some.#ifdef CYGPKG_UITRON_MEMPOOLFIXED#if (0 < CYGNUM_UITRON_MEMPOOLFIXED) || \    defined (CYGDAT_UITRON_MEMPOOLFIXED_INITIALIZERS) || \    defined (CYGDAT_UITRON_MEMPOOLFIXED_EXTERNS)#ifndef CYGDAT_UITRON_MEMPOOLFIXED_EXTERNS#error You must define CYGDAT_UITRON_MEMPOOLFIXED_EXTERNS#endif#ifndef CYGDAT_UITRON_MEMPOOLFIXED_INITIALIZERS#error You must define CYGDAT_UITRON_MEMPOOLFIXED_INITIALIZERS#endif#ifndef CYGNUM_UITRON_MEMPOOLFIXED#error You must define CYGNUM_UITRON_MEMPOOLFIXED#endif// declare the symbols used in the initializerCYGDAT_UITRON_MEMPOOLFIXED_EXTERNS// a Macro to ease the construction: addr, size, blocksize#define CYG_UIT_MEMPOOLFIXED( _a_, _s_, _bs_ ) Cyg_Mempool_Fixed( \    (cyg_uint8 *)(_a_), (cyg_int32)(_s_), (CYG_ADDRWORD)(_bs_) )#ifdef CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE// note that this just picks a suitable size for the initialization, which// should not be too inefficient#define CYG_UIT_MEMPOOLFIXED_NOEXS( _a_, _s_ ) Cyg_Mempool_Fixed( \    (cyg_uint8 *)(_a_), (cyg_int32)(_s_), (CYG_ADDRWORD) ((~7)&((_s_)/2)) )#endifCyg_Mempool_Fixed       CYG_UITRON_DECL( MEMPOOLFIXED ) ={    CYGDAT_UITRON_MEMPOOLFIXED_INITIALIZERS};#undef CYG_UIT_MEMPOOLFIXED#ifdef CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE#undef CYG_UIT_MEMPOOLFIXED_NOEXS#endif#ifdef CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETECyg_Mempool_Fixed       *CYG_UITRON_DECL_PTRS( MEMPOOLFIXED );#endif#endif // do we have fixed memory pools at all?#endif // CYGPKG_UITRON_MEMPOOLFIXED// ------------------------------------------------------------------------// variable memory pools MUST be initialized, IF you have some.#ifdef CYGPKG_UITRON_MEMPOOLVAR#if (0 < CYGNUM_UITRON_MEMPOOLVAR) || \    defined (CYGDAT_UITRON_MEMPOOLVAR_INITIALIZERS) || \    defined (CYGDAT_UITRON_MEMPOOLVAR_EXTERNS)#ifndef CYGDAT_UITRON_MEMPOOLVAR_EXTERNS#error You must define CYGDAT_UITRON_MEMPOOLVAR_EXTERNS#endif#ifndef CYGDAT_UITRON_MEMPOOLVAR_INITIALIZERS#error You must define CYGDAT_UITRON_MEMPOOLVAR_INITIALIZERS#endif#ifndef CYGNUM_UITRON_MEMPOOLVAR#error You must define CYGNUM_UITRON_MEMPOOLVAR#endif// declare the symbols used in the initializerCYGDAT_UITRON_MEMPOOLVAR_EXTERNS// a Macro to ease the construction: addr, size#define CYG_UIT_MEMPOOLVAR( _a_, _s_ ) Cyg_Mempool_Variable( \    (cyg_uint8 *)(_a_),(cyg_int32)(_s_))#ifdef CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE#define CYG_UIT_MEMPOOLVAR_NOEXS( _a_, _s_ ) Cyg_Mempool_Variable( \    (cyg_uint8 *)(_a_),(cyg_int32)(_s_))#endifCyg_Mempool_Variable CYG_UITRON_DECL( MEMPOOLVAR ) ={    CYGDAT_UITRON_MEMPOOLVAR_INITIALIZERS};#undef CYG_UIT_MEMPOOLVAR#ifdef CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE#undef CYG_UIT_MEMPOOLVAR_NOEXS#endif#ifdef CYGPKG_UITRON_MEMPOOLVAR_CREATE_DELETECyg_Mempool_Variable    *CYG_UITRON_DECL_PTRS( MEMPOOLVAR );#endif#endif // do we have variable memory pools at all?#endif // CYGPKG_UITRON_MEMPOOLVAR// ------------------------------------------------------------------------// Cyclic alarm handlers might be initialized, if you have some.//#ifdef CYGPKG_UITRON_CYCLICS#if (0 < CYGNUM_UITRON_CYCLICS) || \    defined( CYGDAT_UITRON_CYCLIC_EXTERNS ) || \    defined( CYGDAT_UITRON_CYCLIC_INITIALIZERS )#ifndef CYGNUM_UITRON_CYCLICS#error You must define CYGNUM_UITRON_CYCLICS#endif#if defined( CYGDAT_UITRON_CYCLIC_INITIALIZERS ) || \    defined( CYGDAT_UITRON_CYCLIC_EXTERNS )#ifndef CYGDAT_UITRON_CYCLIC_INITIALIZERS#error You must define CYGDAT_UITRON_CYCLIC_INITIALIZERS#endif#ifndef CYGDAT_UITRON_CYCLIC_EXTERNS#error You must define CYGDAT_UITRON_CYCLIC_EXTERNS#endif// declare the symbols used in the initializerCYGDAT_UITRON_CYCLIC_EXTERNS#endif // have externs or initializersCyg_Timer               CYG_UITRON_DECL( CYCLICS )#ifdef CYGDAT_UITRON_CYCLIC_INITIALIZERS#error *** CYCLIC INITIALIZERS ARE NOT SUPPORTED IN THIS RELEASE***// a Macro to ease the construction: proc, arg, time#define CYG_UIT_CYCLIC( ... ) Cyg_Timer() = {    CYGDAT_UITRON_CYCLIC_INITIALIZERS}#undef CYG_UIT_CYCLIC#endif // do we have initializers?; // the end of the declaration, with or without initializer#endif // do we have cyclic alarms at all?#endif // CYGPKG_UITRON_CYCLICS// ------------------------------------------------------------------------// Oneshot alarm handlers might be initialized, if you have some.//#ifdef CYGPKG_UITRON_ALARMS#if (0 < CYGNUM_UITRON_ALARMS) || \    defined( CYGDAT_UITRON_ALARM_EXTERNS ) || \    defined( CYGDAT_UITRON_ALARM_INITIALIZERS )#ifndef CYGNUM_UITRON_ALARMS#error You must define CYGNUM_UITRON_ALARMS#endif#if defined( CYGDAT_UITRON_ALARM_INITIALIZERS ) || \    defined( CYGDAT_UITRON_ALARM_EXTERNS )#ifndef CYGDAT_UITRON_ALARM_INITIALIZERS#error You must define CYGDAT_UITRON_ALARM_INITIALIZERS#endif#ifndef CYGDAT_UITRON_ALARM_EXTERNS#error You must define CYGDAT_UITRON_ALARM_EXTERNS#endif// declare the symbols used in the initializerCYGDAT_UITRON_ALARM_EXTERNS#endif // have externs or initializersCyg_Timer               CYG_UITRON_DECL( ALARMS )#ifdef CYGDAT_UITRON_ALARM_INITIALIZERS#error *** ALARM INITIALIZERS ARE NOT SUPPORTED IN THIS RELEASE***// a Macro to ease the construction: proc, arg, time#define CYG_UIT_ALARM( ... ) Cyg_Timer() = {    CYGDAT_UITRON_ALARM_INITIALIZERS}#undef CYG_UIT_ALARM#endif // do we have initializers?; // the end of the declaration, with or without initializer#endif // do we have oneshot alarms at all?#endif // CYGPKG_UITRON_ALARMS// ------------------------------------------------------------------------#endif // CYGPKG_UITRON// EOF uit_objs.cxx

⌨️ 快捷键说明

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