module ti.uia.runtime.LoggerSM

Logger implementation that stores Log records into shared memory

This logger implementation stores xdc.runtime.Log records into shared memory. This logger is intended to be used for SoC system (e.g. EVMTI816X), where Linux is running on the host core (e.g. CortexA8) and SYS/BIOS is running on the targets (e.g. M3 and DSP). [ more ... ]
C synopsis target-domain sourced in ti/uia/runtime/LoggerSM.xdc
#include <ti/uia/runtime/LoggerSM.h>
Functions
Void
Void
Void
Void
Void 
Bool 
Functions common to all ILogger modules
Bool 
Bool 
Void 
Void 
Void 
Void 
Void 
LoggerSM_write8// Process a log event with 8 arguments and the calling address(LoggerSM_Handle handle, Log_Event evt, Types_ModuleId mid, IArg a1, IArg a2, IArg a3, IArg a4, IArg a5, IArg a6, IArg a7, IArg a8);
Functions common to all IFilterLogger modules
Void 
Functions common to all target instances
Functions common to all target modules
Typedefs
typedef LoggerSM_Object *
typedef struct
typedef struct
typedef struct
Constants
extern const Bool 
extern const Error_Id 
extern const Bool 
extern const Bool 
extern const Diags_Mask 
extern const Diags_Mask 
extern const Diags_Mask 
extern const Diags_Mask 
extern const Int 
extern const Bool 
extern const SizeT 
 
DETAILS
This logger implementation stores xdc.runtime.Log records into shared memory. This logger is intended to be used for SoC system (e.g. EVMTI816X), where Linux is running on the host core (e.g. CortexA8) and SYS/BIOS is running on the targets (e.g. M3 and DSP).
This logger is used on the targets. The host is then responsible for reading the shared memory and processing the records. UIA ships the ti/uia/linux/LoggerSM module that can be used to process the records. UIA also ships a cmdline app, ti/uia/examples/evmti816x/loggerSMDump.out, that show how to use the linux/LoggerSM module.
CACHE MANAGEMENT
The location of the shared memory that is used by LoggerSM must be specified by the application. This shared memory must be in a non-cacheable region. The 'bufSection' configuration parameter can be used to help place the Logger's buffer. Refer to the device specific LoggerSM examples (e.g. ti/uia/examples/evmti816x/readme.txt) to see how this was accomplished.
PARTITIONS
The application gets to specify the size of the shared region. This size is divided between each of the targets. For example, on the evmti816x, if the 'sharedMemorySize' was 0x3000, each target, dsp, videoM3 and vpssM3, would get 0x1000 amount of shared memory for log records. Each target region is called a partition. Since LoggerSM is a generic logger that can be used on multiple devices, the number of partitions (e.g. number of targets using the shared memory) is specified wtih the 'numPartitions' configuration option. Each target needs a unique 'partitionId' also. For example, on evmti816x examples, the dsp is assigned 0, videoM3 is assigned 1 and vpssM3 is assigned 2. This corresponds with the IPC Multicore Ids for simplicity sake. Note: the partition id can be set during target startup also via the 'setPartitionId' API.
LoggerSM supports multiple instances, but all instances are writing to the same shared memory (in a thread safe manner). This was done to simplify the design. Because of this, application really should only create one LoggerSM instance.
DECODE AND OVERWRITE
The LoggerSM module has two key configuration options: 'decode' and 'overwrite'
The 'decode' configuration determines whether the target will decode the Log record during the Log call. If 'decode' is true, the Log record is converted to an ASCII string and then written into the shared memory. This approach is expensive from a performance standpoint. Its value is that it is easy to manage and view on the host (e.g. ti/uia/examples/evmti816x/loggerSMDump.out prints the ASCII strings to the console on the CortexA8).
If 'decode' is false, the Log records are not decoded. Instead they are stored in the shared memory as binary data. This allows the Log calls to be much faster. The burden for decoding is on the readers side. For example, ti/uia/examples/evmti816x/loggerSMDump.out dumps the encoded records into a binary file that can be post-processed in CCS' System Analyzer.
The 'overwrite' configuration determines whether the target will overwrite old records when the shared memory is full. The default setting is false, so when the logger is full, new records are dropped. This mode allows the reader (e.g. ti/uia/examples/evmti816x/loggerSMDump.out) to read the records while the target is running.
When 'overwrite', old records are overwritten when the logger is full. However, the reader should only run when the targets are halted (or crashed).
CAVEATS
  • Currently LoggerSM assumes the endianness and word size of the host and targets are the same.
 
config LoggerSM_E_badLevel  // module-wide

Error raised if get or setFilterLevel receive a bad level value

C synopsis target-domain
extern const Error_Id LoggerSM_E_badLevel;
 
 
config LoggerSM_decode  // module-wide

Flag to determine whether to decode the events in shared memory

C synopsis target-domain
extern const Bool LoggerSM_decode;
 
DETAILS
If true, all the events will be decoded into ASCII strings when it is written into shared memory. If false, binary data is written instead.
 
config LoggerSM_filterByLevel  // module-wide

Support filtering of events by event level

C synopsis target-domain
extern const Bool LoggerSM_filterByLevel;
 
DETAILS
To improve logging performance, this feature can be disabled by setting filterByLevel to false.
See 'setFilterLevel' for an explanation of level filtering.
 
config LoggerSM_isTimestampEnabled  // module-wide

Enable or disable logging the 64b local CPU timestamp at the start of each event

C synopsis target-domain
extern const Bool LoggerSM_isTimestampEnabled;
 
 
config LoggerSM_level1Mask  // module-wide

Mask of diags categories whose initial filtering level is Diags.LEVEL1

C synopsis target-domain
extern const Diags_Mask LoggerSM_level1Mask;
 
DETAILS
See 'level4Mask' for details.
 
config LoggerSM_level2Mask  // module-wide

Mask of diags categories whose initial filtering level is Diags.LEVEL2

C synopsis target-domain
extern const Diags_Mask LoggerSM_level2Mask;
 
DETAILS
See 'level4Mask' for details.
 
config LoggerSM_level3Mask  // module-wide

Mask of diags categories whose initial filtering level is Diags.LEVEL3

C synopsis target-domain
extern const Diags_Mask LoggerSM_level3Mask;
 
DETAILS
See 'level4Mask' for details.
 
config LoggerSM_level4Mask  // module-wide

Mask of diags categories whose initial filtering level is Diags.LEVEL4

C synopsis target-domain
extern const Diags_Mask LoggerSM_level4Mask;
 
DETAILS
If 'filterByLevel' is true, then all LoggerBuf instances will filter incoming events based on their event level.
The LoggerSM module allows for specifying a different filter level for every Diags bit. These filtering levels are module wide; LoggerBuf does not support specifying the levels on a per-instance basis.
The setFilterLevel API can be used to change the filtering levels at runtime.
The default filtering levels are assigned using the 'level1Mask' - 'level4Mask' config parameters. These are used to specify, for each of the four event levels, the set of bits which should filter at that level by default.
The default filtering configuration sets the filter level to Diags.LEVEL4 for all logging-related diags bits so that all events are logged by default.
 
config LoggerSM_numPartitions  // module-wide

Number of partitions sharing the shared memory

C synopsis target-domain
extern const Int LoggerSM_numPartitions;
 
 
config LoggerSM_overwrite  // module-wide

Flag to determine whether to overwrite records when full

C synopsis target-domain
extern const Bool LoggerSM_overwrite;
 
DETAILS
If true and when the buffer is full, the logger will overwrite the oldest record. Reading the records can only occur when the targets have been halted.
If false and when the buffer is full, the logger will discard the new record.
 
config LoggerSM_sharedMemorySize  // module-wide

Total size of shared memory in MAU that will be divided by the number of partitions

C synopsis target-domain
extern const SizeT LoggerSM_sharedMemorySize;
 
 
LoggerSM_setPartitionId()  // module-wide

Change the partitionId at runtime

C synopsis target-domain
Void LoggerSM_setPartitionId(Int partitionId);
 
DETAILS
Must be called early before module startup occurs. Generally the best place to do this is via the xdc.runtime.Startup.firstFxns array.
 
LoggerSM_setSharedMemory()  // module-wide

Specify the shared memory to be used by LoggerSM

C synopsis target-domain
Bool LoggerSM_setSharedMemory(Ptr sharedMemory, Bits32 sharedMemorySize);
 
ARGUMENTS
sharedMemory — Base address of the shared memory to be used by LoggerSM.
sharedMemorySize — Size of the shared memory.
DETAILS
This runtime API can be called once to initialize the shared memory that the all LoggerSM instances use. This API can only be called if 'sharedMemorySize' is set to zero. If 'sharedMemorySize' is non-zero, the shared memory is statically defined and initialized instead. Since the memory is already defined, this API cannot change it.
RETURNS
This function returns TRUE if successful. It returns FALSE if not. The reasons for failure are either 'sharedMemorySize' is non-zero or the API has been called multiple times.
Module-Wide Built-Ins

C synopsis target-domain
Types_ModuleId LoggerSM_Module_id();
// Get this module's unique id
 
Bool LoggerSM_Module_startupDone();
// Test if this module has completed startup
 
IHeap_Handle LoggerSM_Module_heap();
// The heap from which this module allocates memory
 
Bool LoggerSM_Module_hasMask();
// Test whether this module has a diagnostics mask
 
Bits16 LoggerSM_Module_getMask();
// Returns the diagnostics mask for this module
 
Void LoggerSM_Module_setMask(Bits16 mask);
// Set the diagnostics mask for this module
Instance Object Types

C synopsis target-domain
typedef struct LoggerSM_Object LoggerSM_Object;
// Opaque internal representation of an instance object
 
typedef LoggerSM_Object *LoggerSM_Handle;
// Client reference to an instance object
 
typedef struct LoggerSM_Struct LoggerSM_Struct;
// Opaque client structure large enough to hold an instance object
 
LoggerSM_Handle LoggerSM_handle(LoggerSM_Struct *structP);
// Convert this instance structure pointer into an instance handle
 
LoggerSM_Struct *LoggerSM_struct(LoggerSM_Handle handle);
// Convert this instance handle into an instance structure pointer
Instance Config Parameters

C synopsis target-domain
typedef struct LoggerSM_Params {
// Instance config-params structure
    IInstance_Params *instance;
    // Common per-instance configs
} LoggerSM_Params;
 
Void LoggerSM_Params_init(LoggerSM_Params *params);
// Initialize this config-params structure with supplier-specified defaults before instance creation
Instance Creation

C synopsis target-domain
LoggerSM_Handle LoggerSM_create(const LoggerSM_Params *params, Error_Block *eb);
// Allocate and initialize a new instance object and return its handle
 
Void LoggerSM_construct(LoggerSM_Struct *structP, const LoggerSM_Params *params);
// Initialize a new instance object inside the provided structure
ARGUMENTS
params — per-instance config params, or NULL to select default values (target-domain only)
eb — active error-handling block, or NULL to select default policy (target-domain only)
SEE
Instance Deletion

C synopsis target-domain
Void LoggerSM_delete(LoggerSM_Handle *handleP);
// Finalize and free this previously allocated instance object, setting the referenced handle to NULL
 
Void LoggerSM_destruct(LoggerSM_Struct *structP);
// Finalize the instance object inside the provided structure
 
LoggerSM_disable()  // instance

Disable a log

C synopsis target-domain
Bool LoggerSM_disable(LoggerSM_Handle handle);
 
ARGUMENTS
handle — handle of a previously-created LoggerSM instance object
DETAILS
Events written to a disabled log are silently discarded.
Events written to a disabled log are silently discarded.
RETURNS
The function returns the state of the log (TRUE if enabled, FALSE if disabled) before the call. This return value allows clients to restore the previous state. Note: not thread safe.
The function returns the state of the log (TRUE if enabled, FALSE if disabled) before the call. That allow clients to restore the previous state.
 
LoggerSM_enable()  // instance

Enable a log

C synopsis target-domain
Bool LoggerSM_enable(LoggerSM_Handle handle);
 
ARGUMENTS
handle — handle of a previously-created LoggerSM instance object
RETURNS
The function returns the state of the log (TRUE if enabled, FALSE if disabled) before the call. This return value allows clients to restore the previous state. Note: not thread safe.
The function returns the state of the log (TRUE if enabled, FALSE if disabled) before the call. That allow clients to restore the previous state.
 
LoggerSM_getFilterLevel()  // instance

Returns the mask of diags categories currently set to the specified level

C synopsis target-domain
Diags_Mask LoggerSM_getFilterLevel(LoggerSM_Handle handle, Diags_EventLevel level);
 
ARGUMENTS
handle — handle of a previously-created LoggerSM instance object
DETAILS
See 'setFilterLevel' for an explanation of level filtering.
See 'setFilterLevel' for an explanation of level filtering.
 
LoggerSM_setFilterLevel()  // instance

Sets the level of detail that instances will log

C synopsis target-domain
Void LoggerSM_setFilterLevel(LoggerSM_Handle handle, Diags_Mask mask, Diags_EventLevel filterLevel);
 
ARGUMENTS
handle — handle of a previously-created LoggerSM instance object
mask — The diags categories to set the level for
The diags categories to set the level for
filterLevel — The new filtering level for the specified categories
The new filtering level for the specified categories
DETAILS
Events with the specified level or higher will be logged, events below the specified level will be dropped.
Events are filtered first by diags category, then by level. If an event's diags category is disabled in the module's diags mask, then it will be filtered out regardless of level. The event will not even be passed to the logger.
This API allows for setting the filtering level for more than one diags category at a time. The mask parameter can be a single category or multiple categories combined, and the level will be set for all of those categories.
Events with the specified level or higher will be logged, events below the specified level will be dropped.
Events are filtered first by diags category, then by level. If an event's diags category is disabled in the module's diags mask, then it will be filtered out regardless of level. The event will not even be passed to the logger.
This API allows for setting the filtering level for more than one diags category at a time. The mask parameter can be a single category or multiple categories combined, and the level will be set for all of those categories.
 
LoggerSM_write0()  // instance

Process a log event with 0 arguments and the calling address

C synopsis target-domain
Void LoggerSM_write0(LoggerSM_Handle handle, Log_Event evt, Types_ModuleId mid);
 
ARGUMENTS
handle — handle of a previously-created LoggerSM instance object
DETAILS
Same as write4 except with 0 arguments rather than 4.
Same as write4 except with 0 arguments rather than 4.
SEE
 
LoggerSM_write1()  // instance

Process a log event with 1 arguments and the calling address

C synopsis target-domain
Void LoggerSM_write1(LoggerSM_Handle handle, Log_Event evt, Types_ModuleId mid, IArg a1);
 
ARGUMENTS
handle — handle of a previously-created LoggerSM instance object
DETAILS
Same as write4 except with 1 arguments rather than 4.
Same as write4 except with 1 arguments rather than 4.
SEE
 
LoggerSM_write2()  // instance

Process a log event with 2 arguments and the calling address

C synopsis target-domain
Void LoggerSM_write2(LoggerSM_Handle handle, Log_Event evt, Types_ModuleId mid, IArg a1, IArg a2);
 
ARGUMENTS
handle — handle of a previously-created LoggerSM instance object
DETAILS
Same as write4 except with 2 arguments rather than 4.
Same as write4 except with 2 arguments rather than 4.
SEE
 
LoggerSM_write4()  // instance

Process a log event with 4 arguments and the calling address

C synopsis target-domain
Void LoggerSM_write4(LoggerSM_Handle handle, Log_Event evt, Types_ModuleId mid, IArg a1, IArg a2, IArg a3, IArg a4);
 
ARGUMENTS
handle — handle of a previously-created LoggerSM instance object
evt — event to be logged
mid — module ID of the module which logged the event
a1 — arbitrary argument passed by caller
DETAILS
The evt argument is of type Log.Event, which encodes the Log.EventId, the Diags.Mask, and the Diags.EventLevel of the event. The event ID can be obtained via Types.getEventId(evt), the Diags mask can be obtained via Diags.getMask(evt), and the event level can be obtained via Diags.getLevel(evt).
The modId argument is the module ID of the module that logged the event.
The event information can be used by the logger to handle different events specially. For example, the event ID can be used to compare against other known Log.Events.
      if (Log_getEventId(MY_EVENT) == Log_getEventId(evt)) {
          :
      }
The Diags mask and event level can be used for filtering of events based on event level (see IFilterLogger), or even routing events to separate loggers based on diags category (see, for example, LoggerBuf.statusLogger).
The Diags mask and event level are useful for handling the event, but are generally not recorded by the logger because they are not needed in decoding and displaying the event. A more suitable value to record is a Types.Event, which encodes the event ID and module ID. For example, the Log.EventRec type stores a Types.Event in its record definition. A Types.Event can be created using the Types.makeEvent API given the event ID and module ID.
The event ID value of 0 is used to indicate an event triggered by a call to one of the Log_print[0-6] methods. These methods take a format string rather than a Log_Event argument and, as a result, the event ID encoded in evt is 0 and the parameter a1 is the format string.
Non-zero event IDs can also be used to access the msg string associated with the Log.EventDesc that originally defined the Log event.
      Log_EventId id = Log_getEventId(evt));
      if (id != 0) {
          String msg = Text_ropeText(id);
          System_aprintf(msg, a1, a2, a3, a4);
      }
This works because an event's ID is simply an offset into a table of characters (maintained by the Text module) containing the event's msg string.
The arguments a1, a2, etc. are parameters that are to be interpreted according to the message format string associated with evt.
SEE
 
LoggerSM_write8()  // instance

Process a log event with 8 arguments and the calling address

C synopsis target-domain
Void LoggerSM_write8(LoggerSM_Handle handle, Log_Event evt, Types_ModuleId mid, IArg a1, IArg a2, IArg a3, IArg a4, IArg a5, IArg a6, IArg a7, IArg a8);
 
ARGUMENTS
handle — handle of a previously-created LoggerSM instance object
DETAILS
Same as write4 except with 8 arguments rather than 4.
Same as write4 except with 8 arguments rather than 4.
SEE
Instance Convertors

C synopsis target-domain
IFilterLogger_Handle LoggerSM_Handle_upCast(LoggerSM_Handle handle);
// unconditionally move one level up the inheritance hierarchy
 
LoggerSM_Handle LoggerSM_Handle_downCast(IFilterLogger_Handle handle);
// conditionally move one level down the inheritance hierarchy; NULL upon failure
 
ILogger_Handle LoggerSM_Handle_upCast2(LoggerSM_Handle handle);
// unconditionally move 2 levels up the inheritance hierarchy
 
LoggerSM_Handle LoggerSM_Handle_downCast2(ILogger_Handle handle);
// conditionally move 2 levels down the inheritance hierarchy; NULL upon failure
Instance Built-Ins

C synopsis target-domain
Int LoggerSM_Object_count();
// The number of statically-created instance objects
 
LoggerSM_Handle LoggerSM_Object_get(LoggerSM_Object *array, Int i);
// The handle of the i-th statically-created instance object (array == NULL)
 
LoggerSM_Handle LoggerSM_Object_first();
// The handle of the first dynamically-created instance object, or NULL
 
LoggerSM_Handle LoggerSM_Object_next(LoggerSM_Handle handle);
// The handle of the next dynamically-created instance object, or NULL
 
IHeap_Handle LoggerSM_Object_heap();
// The heap used to allocate dynamically-created instance objects
 
Types_Label *LoggerSM_Handle_label(LoggerSM_Handle handle, Types_Label *buf);
// The label associated with this instance object
 
String LoggerSM_Handle_name(LoggerSM_Handle handle);
// The name of this instance object
 
XDCscript usage meta-domain sourced in ti/uia/runtime/LoggerSM.xdc
var LoggerSM = xdc.useModule('ti.uia.runtime.LoggerSM');
module-wide constants & types
        obj.instanceId = Int  ...
        obj.priority = Int  ...
module-wide config parameters
        msg: "E_badLevel: Bad filter level value: %d"
    };
 
module-wide functions
    LoggerSM.getMetaArgs// Returns any meta data needed to support RTA(Any inst, Any instNum) returns Any
per-instance config parameters
    var params = new LoggerSM.Params// Instance config-params object;
per-instance creation
    var inst = LoggerSM.create// Create an instance-object(params);
 
 
metaonly struct LoggerSM.MetaData

This data is added to the RTA MetaData file

XDCscript usage meta-domain
var obj = new LoggerSM.MetaData;
 
    obj.instanceId = Int  ...
    obj.priority = Int  ...
 
 
config LoggerSM.E_badLevel  // module-wide

Error raised if get or setFilterLevel receive a bad level value

XDCscript usage meta-domain
LoggerSM.E_badLevel = Error.Desc {
    msg: "E_badLevel: Bad filter level value: %d"
};
 
C SYNOPSIS
 
config LoggerSM.decode  // module-wide

Flag to determine whether to decode the events in shared memory

XDCscript usage meta-domain
LoggerSM.decode = Bool true;
 
DETAILS
If true, all the events will be decoded into ASCII strings when it is written into shared memory. If false, binary data is written instead.
C SYNOPSIS
 
config LoggerSM.filterByLevel  // module-wide

Support filtering of events by event level

XDCscript usage meta-domain
LoggerSM.filterByLevel = Bool false;
 
DETAILS
To improve logging performance, this feature can be disabled by setting filterByLevel to false.
See 'setFilterLevel' for an explanation of level filtering.
C SYNOPSIS
 
config LoggerSM.isTimestampEnabled  // module-wide

Enable or disable logging the 64b local CPU timestamp at the start of each event

XDCscript usage meta-domain
LoggerSM.isTimestampEnabled = Bool true;
 
C SYNOPSIS
 
config LoggerSM.level1Mask  // module-wide

Mask of diags categories whose initial filtering level is Diags.LEVEL1

XDCscript usage meta-domain
LoggerSM.level1Mask = Bits16 0;
 
DETAILS
See 'level4Mask' for details.
C SYNOPSIS
 
config LoggerSM.level2Mask  // module-wide

Mask of diags categories whose initial filtering level is Diags.LEVEL2

XDCscript usage meta-domain
LoggerSM.level2Mask = Bits16 0;
 
DETAILS
See 'level4Mask' for details.
C SYNOPSIS
 
config LoggerSM.level3Mask  // module-wide

Mask of diags categories whose initial filtering level is Diags.LEVEL3

XDCscript usage meta-domain
LoggerSM.level3Mask = Bits16 0;
 
DETAILS
See 'level4Mask' for details.
C SYNOPSIS
 
config LoggerSM.level4Mask  // module-wide

Mask of diags categories whose initial filtering level is Diags.LEVEL4

XDCscript usage meta-domain
LoggerSM.level4Mask = Bits16 Diags.ALL_LOGGING;
 
DETAILS
If 'filterByLevel' is true, then all LoggerBuf instances will filter incoming events based on their event level.
The LoggerSM module allows for specifying a different filter level for every Diags bit. These filtering levels are module wide; LoggerBuf does not support specifying the levels on a per-instance basis.
The setFilterLevel API can be used to change the filtering levels at runtime.
The default filtering levels are assigned using the 'level1Mask' - 'level4Mask' config parameters. These are used to specify, for each of the four event levels, the set of bits which should filter at that level by default.
The default filtering configuration sets the filter level to Diags.LEVEL4 for all logging-related diags bits so that all events are logged by default.
C SYNOPSIS
 
config LoggerSM.numPartitions  // module-wide

Number of partitions sharing the shared memory

XDCscript usage meta-domain
LoggerSM.numPartitions = Int 3;
 
C SYNOPSIS
 
config LoggerSM.overwrite  // module-wide

Flag to determine whether to overwrite records when full

XDCscript usage meta-domain
LoggerSM.overwrite = Bool false;
 
DETAILS
If true and when the buffer is full, the logger will overwrite the oldest record. Reading the records can only occur when the targets have been halted.
If false and when the buffer is full, the logger will discard the new record.
C SYNOPSIS
 
config LoggerSM.sharedMemorySize  // module-wide

Total size of shared memory in MAU that will be divided by the number of partitions

XDCscript usage meta-domain
LoggerSM.sharedMemorySize = SizeT 0x20000;
 
C SYNOPSIS
 
metaonly config LoggerSM.bufSection  // module-wide

Section name for the buffer in shared memory

XDCscript usage meta-domain
LoggerSM.bufSection = String null;
 
 
metaonly config LoggerSM.common$  // module-wide

Common module configuration parameters

XDCscript usage meta-domain
LoggerSM.common$ = Types.Common$ undefined;
 
DETAILS
All modules have this configuration parameter. Its name contains the '$' character to ensure it does not conflict with configuration parameters declared by the module. This allows new configuration parameters to be added in the future without any chance of breaking existing modules.
 
metaonly config LoggerSM.partitionId  // module-wide

Unique id for each core using the shared memory

XDCscript usage meta-domain
LoggerSM.partitionId = Int 0;
 
 
metaonly LoggerSM.getMetaArgs()  // module-wide

Returns any meta data needed to support RTA

XDCscript usage meta-domain
LoggerSM.getMetaArgs(Any inst, Any instNum) returns Any
 
DETAILS
This meta data should be returned in the form of a structure which can be converted into XML. This data is added to the RTA XML file during the application's configuration, and can be accessed later through the xdc.rta.MetaData module.
The MetaData is returned per instance of the ILogger module. The instance object is passed to the function as the first argument.
The second argument is the index of the instance in the list of the ILogger's static instances.
Instance Config Parameters

XDCscript usage meta-domain
var params = new LoggerSM.Params;
// Instance config-params object
Instance Creation

XDCscript usage meta-domain
var params = new LoggerSM.Params;
// Allocate instance config-params
params.config =   ...
// Assign individual configs
 
var inst = LoggerSM.create(params);
// Create an instance-object
ARGUMENTS
params — per-instance config params, or NULL to select default values (target-domain only)
eb — active error-handling block, or NULL to select default policy (target-domain only)
SEE
generated on Mon, 28 Jan 2013 17:45:45 GMT