#ifndef _aplmt_system_initapi_h_
#define _aplmt_system_initapi_h_
/*----------------------------------------------------------------------------
** SUMMARY: Global Threading Initialization Interface (SYSMTINIT)
**
** DESCRIPTION:
**  This file provides a 'convenience' interface that initializes the
**  various APLMT sub-system used by the applications.  
**
** CONFIGURATION 
** -------------
**  COMPILE:        USE_APLMT_INIT_xxxxx_IN_SYSTEM_INIT <see the specific sub-systems>
**
**  APPLICATION:    none.
**
**  PLATFORM:       none.
**
**  NOTES:
**  1. Unless explicitly stated otherwise, NONE of the following methods may be 
**     called from interrupt service routines.
**  2. Unless explicitly stated otherwise, NONE of the following methods may be 
**     called before the platform's kernel is running.
**  3. Unless explicitly stated otherwise, all of the following methods ARE 
**     thread-safe.
**  4. For efficency/optimization some methods are 'inlined'.  The inlining
**     is done by using the preprocessor/macros.  The application should
**     treat all methods as function calls and not rely on the fact they may
**     be currently defined as macros.
----------------------------------------------------------------------------*/


#ifdef __cplusplus
extern "C" {
#endif

/*-------------- INLINE IMPLEMENTATION -------------------------------------*/
#include "aplmt/system/init.h"                /* For: inline implementation */


/*-------------- PUBLIC/PUBLISHED API --------------------------------------*/
/** This method provides a single initialization function that will initialize
    all of the APLMT sub-systems and/or interfaces used by the application.  It 
    is the responsiblity of the appplication to enable all of the  
    USE_APLMT_INIT_xxxx compile switches for the sub-system it needs initialized.  
    NOTES:
        o This method ONLY initializes the APLMT (multi-threaded) interfaces. 
          The application is still REQUIRED to call Apl_systemInit().  In 
          addition, this method must be called AFTER the call to 
          Apl_systemInit().
        o Typically, this method is called AFTER the underlying kernel has
          been initialized and/or started.  See your platform's documentation
          for the start-up sequence.
        o This method needs to be called BEFORE any/all calls to the APLMT sub-
          systems and/or interfaces being initialized.
        o The use of the method is OPTIONAL.  In addition, the application
          can mix-n-match, in that some sub-systems are initalized via
          this method and other by explicity application calls.  Just be
          sure that a given init() method is only called ONCE.

    Prototype:
        void Aplmt_systemInit(void);
 */
#define Aplmt_systemInit                  _Aplmt_systemInit



#ifdef __cplusplus
}
#endif
/*--------------------------------------------------------------------------*/
#endif  /* end _aplmt_system_initapi_h_ */
