General purpose logger enabling applications to stream data
to an instrumentation host
The application is responsible for providing the buffers that
LoggerStreamer2 loggers use. There are two ways to accomplish this.
The exchange function is called within the context of a Log call, so the
exchange function should be designed to be fast. Since the exchange
function is called within the context of the Log call, LoggerStreamer2
guarantees no Log records are dropped (i.e. LoggerStreamer2 is lossless).
LoggerStreamer2 was designed to have as minimal impact as possible on an
application when calling a Log function. There are several configuration
parameters that allow an application to get the optimal performance in
exchange for certain restrictions.
Interrupts are disabled during the duration of the log call including
when the exchange function is called. LoggerStreamer2 will ignore any
log events generated during the exchangeFxn (e.g. posting a semaphore).
The following XDC configuration statements
create a logger module, and assign it as the default logger for all
modules.
The following C code demonstrates basic prime and exchange functions,
and logging to different LoggerStreamer2 instances.
A real implementation would send the buffer to an instrumentation
host (e.g. System Analyzer in CCS) via a transport such as UDP.
The following XDC configuration statements show how to use LoggingSetup
with LoggerStreamer2.
enum LoggerStreamer2_TransferType |
|
typedef enum LoggerStreamer2_TransferType {
LoggerStreamer2_TransferType_RELIABLE,
LoggerStreamer2_TransferType_LOSSY
} LoggerStreamer2_TransferType;
enum LoggerStreamer2_TransportType |
|
Used to specify the type of transport to use
typedef enum LoggerStreamer2_TransportType {
LoggerStreamer2_TransportType_UART,
LoggerStreamer2_TransportType_USB,
LoggerStreamer2_TransportType_ETHERNET,
LoggerStreamer2_TransportType_CUSTOM
} LoggerStreamer2_TransportType;
DETAILS
This enum is used by the instrumentation host to determine what
the transport is. It is not used by the target code.
typedef LoggerStreamer2_ExchangeFxnType |
|
Typedef for the exchange function pointer
DETAILS
The exchange function takes a LoggerStreamer2 object and a pointer to
the full buffer as arguments. If using the same exchange function
for multiple LoggerStreamer2 instances,
getContext() can be
called within the exchange function to determine which buffer to
exchange.
typedef LoggerStreamer2_PrimeFxnType |
|
Typedef for the exchange function pointer
config LoggerStreamer2_A_invalidBuffer // module-wide |
|
Assert raised when the buffer parameter is NULL
extern const Assert_Id LoggerStreamer2_A_invalidBuffer;
config LoggerStreamer2_customTransportType // module-wide |
|
Custom transport used to send the records to an instrumentation host
extern const String LoggerStreamer2_customTransportType;
DETAILS
If the desired transport is not in the
TransportType enum,
and
transportType is set to
TransportType_CUSTOM,
this parameter must be filled in with the correct transport name.
If
transportType is NOT set to
TransportType_CUSTOM, this parameter is ignored.
config LoggerStreamer2_filterByLevel // module-wide |
|
Support filtering of events by event level
extern const Bool LoggerStreamer2_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 LoggerStreamer2_isTimestampEnabled // module-wide |
|
Enable or disable logging the 64b local CPU timestamp
at the start of each event
extern const Bool LoggerStreamer2_isTimestampEnabled;
DETAILS
Having a timestamp allows an instrumentation host (e.g.
System Analyzer) to display events with the correct system time.
config LoggerStreamer2_level1Mask // module-wide |
|
Mask of diags categories whose initial filtering level is Diags.LEVEL1
extern const Diags_Mask LoggerStreamer2_level1Mask;
DETAILS
See '
level4Mask' for details.
config LoggerStreamer2_level2Mask // module-wide |
|
Mask of diags categories whose initial filtering level is Diags.LEVEL2
extern const Diags_Mask LoggerStreamer2_level2Mask;
DETAILS
See '
level4Mask' for details.
config LoggerStreamer2_level3Mask // module-wide |
|
Mask of diags categories whose initial filtering level is Diags.LEVEL3
extern const Diags_Mask LoggerStreamer2_level3Mask;
DETAILS
See '
level4Mask' for details.
config LoggerStreamer2_level4Mask // module-wide |
|
Mask of diags categories whose initial filtering level is Diags.LEVEL4
extern const Diags_Mask LoggerStreamer2_level4Mask;
DETAILS
If 'filterByLevel' is true, then all LoggerBuf instances will filter
incoming events based on their event level.
The LoggerCircBuf 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 LoggerStreamer2_statusLogger // module-wide |
|
This configuration option is not supported by this logger and should
be left null
config LoggerStreamer2_supportLoggerDisable // module-wide |
|
Allow LoggerStreamer2 instances to be enabled/disabled during runtime
extern const Bool LoggerStreamer2_supportLoggerDisable;
config LoggerStreamer2_testForNullWrPtr // module-wide |
|
Protect against log calls during the exchange function
extern const Bool LoggerStreamer2_testForNullWrPtr;
LoggerStreamer2_setModuleIdToRouteToStatusLogger() // module-wide |
|
This function is provided for compatibility with the ILoggerSnapshot
interface only and simply returns when called
Void LoggerStreamer2_setModuleIdToRouteToStatusLogger(
Types_ModuleId mid);
Module-Wide Built-Ins |
|
// Get this module's unique id
Bool LoggerStreamer2_Module_startupDone();
// Test if this module has completed startup
// The heap from which this module allocates memory
Bool LoggerStreamer2_Module_hasMask();
// Test whether this module has a diagnostics mask
Bits16 LoggerStreamer2_Module_getMask();
// Returns the diagnostics mask for this module
Void LoggerStreamer2_Module_setMask(Bits16 mask);
// Set the diagnostics mask for this module
Instance Object Types |
|
typedef struct LoggerStreamer2_Object LoggerStreamer2_Object;
// Opaque internal representation of an instance object
// Client reference to an instance object
typedef struct LoggerStreamer2_Struct LoggerStreamer2_Struct;
// Opaque client structure large enough to hold an instance object
// Convert this instance structure pointer into an instance handle
// Convert this instance handle into an instance structure pointer
Instance Config Parameters |
|
typedef struct LoggerStreamer2_Params {
// Instance config-params structure
// Common per-instance configs
SizeT bufSize;
// LoggerStreamer2 instance's buffer size in MAUs (Minimum Addressable
Units e.g. Bytes)
UArg context;
// Context that can be used in exchangeFxn and primeFxn
// Function pointer to the exchange function
Int16 instanceId;
// Unique id of the LoggerStreamer2 instance
SizeT maxEventSize;
// The maximum event size (in Maus) that can be written with a single
event. Must be less than or equal to bufSize - 64
// Function pointer to the prime function
//
} LoggerStreamer2_Params;
// Initialize this config-params structure with supplier-specified defaults before instance creation
config LoggerStreamer2_Params.bufSize // instance |
|
LoggerStreamer2 instance's buffer size in MAUs (Minimum Addressable
Units e.g. Bytes)
DETAILS
NOTE: the buffer size must contain an integer number of 32b words
(e.g. if a MAU = 1 byte, then the buffer size must be a multiple of 4).
The buffer size must also be at least maxEventSize + 64.
config LoggerStreamer2_Params.context // instance |
|
Context that can be used in exchangeFxn and primeFxn
DETAILS
The context can be used to identify the logger instance, when
using the same
exchangeFxn or
primeFxn for
multiple LoggerStreamer2 instances. Use
getContext()
to get the logger context. The context can be changed, if needed,
by calling
setContext().
The context can be set to null if using a different exchangeFxn and primeFxn
for each LoggerStreamer2 instance.
config LoggerStreamer2_Params.exchangeFxn // instance |
|
Function pointer to the exchange function
DETAILS
The exchange function must return a pointer to a buffer that is word
aligned, initialized with a UIA header and the correct size. This is
called in the context of a log so generally the exchange function
should be quick to execute.
config LoggerStreamer2_Params.instanceId // instance |
|
Unique id of the LoggerStreamer2 instance
config LoggerStreamer2_Params.maxEventSize // instance |
|
The maximum event size (in Maus) that can be written with a single
event. Must be less than or equal to bufSize - 64
DETAILS
The writeMemoryRange API checks to see if the event size required to
write the block of memory is larger than maxEventSize. If so, it will
split the memory range up into a number of smaller blocks and log the
blocks using separate events with a common snapshot ID in order to
allow the events to be collated and the original memory block to be
reconstructed on the host.
config LoggerStreamer2_Params.primeFxn // instance |
|
Function pointer to the prime function
config LoggerStreamer2_Params.transferType // instance |
|
Runtime Instance Creation |
|
// Allocate and initialize a new instance object and return its handle
// 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)
Instance Deletion |
|
// Finalize and free this previously allocated instance object, setting the referenced handle to NULL
// Finalize the instance object inside the provided structure
LoggerStreamer2_disable() // instance |
|
Disable a log
ARGUMENTS
handle
handle of a previously-created LoggerStreamer2 instance object
DETAILS
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.
LoggerStreamer2_enable() // instance |
|
Enable a log
ARGUMENTS
handle
handle of a previously-created LoggerStreamer2 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.
LoggerStreamer2_flush() // instance |
|
Force LoggerStreamer2 to call the exchange function
ARGUMENTS
handle
handle of a previously-created LoggerStreamer2 instance object
DETAILS
This API makes LoggerStreamer2 call the application provided
exchangeFxn function if there are Log events present
in the buffer.
The call to the
exchangeFxn function is called in the
context of the flush call.
LoggerStreamer2_getBufSize() // instance |
|
Returns the Log's configured buffer size
ARGUMENTS
handle
handle of a previously-created LoggerStreamer2 instance object
RETURNS
Log's configured buffer size.
LoggerStreamer2_getContents() // instance |
|
Fills buffer that is passed in with unread data, up to size bytes
in length
ARGUMENTS
handle
handle of a previously-created LoggerStreamer2 instance object
hdrBuf
Ptr to a buffer that is at least <size> bytes in length
size
The max number of bytes to be read into the buffer
cpSize
The number of bytes actually copied
DETAILS
The logger is responsible for ensuring that no partial event records
are stored in the buffer. Bytes are in target endianness.
RETURN
returns false if logger has no more records to read
LoggerStreamer2_getContext() // instance |
|
Returns the Log's context
ARGUMENTS
handle
handle of a previously-created LoggerStreamer2 instance object
RETURNS
context
LoggerStreamer2_getFilterLevel() // instance |
|
Returns the mask of diags categories currently set to the specified
level
ARGUMENTS
handle
handle of a previously-created LoggerStreamer2 instance object
DETAILS
See '
setFilterLevel' for an explanation of level filtering.
See '
setFilterLevel' for an explanation of level filtering.
LoggerStreamer2_getInstanceId() // instance |
|
Returns an ID value that uniquely identifies this instance of the logger
ARGUMENTS
handle
handle of a previously-created LoggerStreamer2 instance object
DETAILS
Note that a value of 0 is reserved to indicate that the instance ID has
not been initialized yet and a unique value needs to be generated.
LoggerStreamer2_getMaxLength() // instance |
|
ARGUMENTS
handle
handle of a previously-created LoggerStreamer2 instance object
LoggerStreamer2_getTransferType() // instance |
|
ARGUMENTS
handle
handle of a previously-created LoggerStreamer2 instance object
LoggerStreamer2_initBuffer() // instance |
|
Initializes the UIA packet header
ARGUMENTS
handle
handle of a previously-created LoggerStreamer2 instance object
buffer
Pointer to the buffer that LoggerStreamer2 will
fill with Log events. The first four 32-bit words
will contain the UIAPacket_Hdr structure.
src
Used to initialize the UIA source address. For
a single core device, this will generally be 0.
For multi-core devices, it generally corresponds
to the DNUM (on C6xxxx deviecs) or the Ipc
MultiProc id. It must be unique for all cores and
match the configuration in the System Analyzer
endpoint configuration.
DETAILS
This API is used to initialize a buffer before it is given to
LoggerStreamer2 (via priming or exchange). The function initializes
the
UIAPacket_Hdr portion of the buffer.
LoggerStreamer2_isEmpty() // instance |
|
Returns true if the transfer buffer has no unread data
ARGUMENTS
handle
handle of a previously-created LoggerStreamer2 instance object
RETURN
true if no unread data
LoggerStreamer2_prime() // instance |
|
If PrimeFxn is not set the user must call prime with the first buffer
ARGUMENTS
handle
handle of a previously-created LoggerStreamer2 instance object
LoggerStreamer2_reset() // instance |
|
Reset a log to empty state and enable it
ARGUMENTS
handle
handle of a previously-created LoggerStreamer2 instance object
WARNING
This method is not synchronized with other instance
methods and, as a result, it must never be called when there is a
chance that another instance method is currently in operation or
when another method on this instance may preempt this call.
LoggerStreamer2_setContext() // instance |
|
Set the Log's context
ARGUMENTS
handle
handle of a previously-created LoggerStreamer2 instance object
context
New value of Log's context
LoggerStreamer2_setFilterLevel() // instance |
|
Sets the level of detail that instances will log
ARGUMENTS
handle
handle of a previously-created LoggerStreamer2 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.
LoggerStreamer2_write0() // instance |
|
Process a log event with 0 arguments and the calling address
ARGUMENTS
handle
handle of a previously-created LoggerStreamer2 instance object
DETAILS
Same as write4 except with 0 arguments rather than 4.
Same as write4 except with 0 arguments rather than 4.
SEE
LoggerStreamer2_write1() // instance |
|
Process a log event with 1 arguments and the calling address
ARGUMENTS
handle
handle of a previously-created LoggerStreamer2 instance object
DETAILS
Same as write4 except with 1 arguments rather than 4.
Same as write4 except with 1 arguments rather than 4.
SEE
LoggerStreamer2_write2() // instance |
|
Process a log event with 2 arguments and the calling address
ARGUMENTS
handle
handle of a previously-created LoggerStreamer2 instance object
DETAILS
Same as write4 except with 2 arguments rather than 4.
Same as write4 except with 2 arguments rather than 4.
SEE
LoggerStreamer2_write4() // instance |
|
Process a log event with 4 arguments and the calling address
ARGUMENTS
handle
handle of a previously-created LoggerStreamer2 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
LoggerStreamer2_write8() // instance |
|
Process a log event with 8 arguments and the calling address
Void LoggerStreamer2_write8(
LoggerStreamer2_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 LoggerStreamer2 instance object
DETAILS
Same as write4 except with 8 arguments rather than 4.
Same as write4 except with 8 arguments rather than 4.
SEE
LoggerStreamer2_writeMemoryRange() // instance |
|
Log an event along with values from a range of memory addresses
ARGUMENTS
handle
handle of a previously-created LoggerStreamer2 instance object
evt
event to be logged
snapshotId
0 = no other snapshot groups, Use value from
LogSnapshot.getSnapshotId() for all snapshots to be grouped.
fileName
__FILE__ result
lineNum
__LINE__ result
fmt
a printf style format string
startAdrs
value for first format conversion character
lengthInMAUs
value for second format conversion character
DETAILS
If the mask in the specified LogSnapshot event has any bit set which is
also set in the current module's diagnostics mask, then this call to
write will "raise" the given LogSnapshot event.
Note that this API supports null terminated strings, arrays of characters and
memory mapped registgers as well as blocks of memory. The LogSnapshot module provides macros that
map the appropriate values to the writeMemoryRange API's arguments
SEE
Instance Convertors |
|
// unconditionally move one level up the inheritance hierarchy
// conditionally move one level down the inheritance hierarchy; NULL upon failure
// unconditionally move 2 levels up the inheritance hierarchy
// conditionally move 2 levels down the inheritance hierarchy; NULL upon failure
// unconditionally move 3 levels up the inheritance hierarchy
// conditionally move 3 levels down the inheritance hierarchy; NULL upon failure
// unconditionally move 4 levels up the inheritance hierarchy
// conditionally move 4 levels down the inheritance hierarchy; NULL upon failure
Instance Built-Ins |
|
Int LoggerStreamer2_Object_count();
// The number of statically-created instance objects
// The handle of the i-th statically-created instance object (array == NULL)
// The handle of the first dynamically-created instance object, or NULL
// The handle of the next dynamically-created instance object, or NULL
// The heap used to allocate dynamically-created instance objects
// The label associated with this instance object
// The name of this instance object
enum LoggerStreamer2.TransferType |
|
values of type LoggerStreamer2.TransferType
const LoggerStreamer2.TransferType_RELIABLE;
const LoggerStreamer2.TransferType_LOSSY;
C SYNOPSIS
enum LoggerStreamer2.TransportType |
|
Used to specify the type of transport to use
values of type LoggerStreamer2.TransportType
const LoggerStreamer2.TransportType_UART;
const LoggerStreamer2.TransportType_USB;
const LoggerStreamer2.TransportType_ETHERNET;
const LoggerStreamer2.TransportType_CUSTOM;
DETAILS
This enum is used by the instrumentation host to determine what
the transport is. It is not used by the target code.
C SYNOPSIS
metaonly struct LoggerStreamer2.MetaData |
|
This data is added to the RTA MetaData file to support stop mode RTA
var obj = new LoggerStreamer2.MetaData;
obj.instanceId = Int ...
obj.priority = Int ...
metaonly struct LoggerStreamer2.RecordView |
|
var obj = new LoggerStreamer2.RecordView;
obj.sequence = Int ...
obj.timestampRaw = Long ...
obj.modName = String ...
obj.text = String ...
obj.eventId = Int ...
obj.eventName = String ...
obj.arg0 = IArg ...
obj.arg1 = IArg ...
obj.arg2 = IArg ...
obj.arg3 = IArg ...
obj.arg4 = IArg ...
obj.arg5 = IArg ...
obj.arg6 = IArg ...
obj.arg7 = IArg ...
metaonly struct LoggerStreamer2.RtaData |
|
Data added to the RTA MetaData file to support System Analyzer
var obj = new LoggerStreamer2.RtaData;
obj.instanceId = Int ...
config LoggerStreamer2.A_invalidBuffer // module-wide |
|
Assert raised when the buffer parameter is NULL
msg: "LoggerStreamer2_create's buffer returned by primeFxn is NULL"
};
C SYNOPSIS
config LoggerStreamer2.customTransportType // module-wide |
|
Custom transport used to send the records to an instrumentation host
LoggerStreamer2.customTransportType = String null;
DETAILS
If the desired transport is not in the
TransportType enum,
and
transportType is set to
TransportType_CUSTOM,
this parameter must be filled in with the correct transport name.
If
transportType is NOT set to
TransportType_CUSTOM, this parameter is ignored.
C SYNOPSIS
config LoggerStreamer2.filterByLevel // module-wide |
|
Support filtering of events by event level
LoggerStreamer2.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 LoggerStreamer2.isTimestampEnabled // module-wide |
|
Enable or disable logging the 64b local CPU timestamp
at the start of each event
LoggerStreamer2.isTimestampEnabled = Bool false;
DETAILS
Having a timestamp allows an instrumentation host (e.g.
System Analyzer) to display events with the correct system time.
C SYNOPSIS
config LoggerStreamer2.level1Mask // module-wide |
|
Mask of diags categories whose initial filtering level is Diags.LEVEL1
LoggerStreamer2.level1Mask = Bits16 0;
DETAILS
See '
level4Mask' for details.
C SYNOPSIS
config LoggerStreamer2.level2Mask // module-wide |
|
Mask of diags categories whose initial filtering level is Diags.LEVEL2
LoggerStreamer2.level2Mask = Bits16 0;
DETAILS
See '
level4Mask' for details.
C SYNOPSIS
config LoggerStreamer2.level3Mask // module-wide |
|
Mask of diags categories whose initial filtering level is Diags.LEVEL3
LoggerStreamer2.level3Mask = Bits16 0;
DETAILS
See '
level4Mask' for details.
C SYNOPSIS
config LoggerStreamer2.level4Mask // module-wide |
|
Mask of diags categories whose initial filtering level is Diags.LEVEL4
DETAILS
If 'filterByLevel' is true, then all LoggerBuf instances will filter
incoming events based on their event level.
The LoggerCircBuf 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 LoggerStreamer2.statusLogger // module-wide |
|
This configuration option is not supported by this logger and should
be left null
C SYNOPSIS
config LoggerStreamer2.supportLoggerDisable // module-wide |
|
Allow LoggerStreamer2 instances to be enabled/disabled during runtime
LoggerStreamer2.supportLoggerDisable = Bool false;
C SYNOPSIS
config LoggerStreamer2.testForNullWrPtr // module-wide |
|
Protect against log calls during the exchange function
LoggerStreamer2.testForNullWrPtr = Bool true;
C SYNOPSIS
metaonly config LoggerStreamer2.common$ // module-wide |
|
Common module configuration parameters
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 LoggerStreamer2.moduleToRouteToStatusLogger // module-wide |
|
This configuration option is not supported by this logger and should
be left unconfigured
LoggerStreamer2.moduleToRouteToStatusLogger = String undefined;
metaonly config LoggerStreamer2.transportType // module-wide |
|
Transport used to send the records to an instrumentation host
DETAILS
This parameter is used to specify the transport that the
exchangeFxn function will use to send the buffer to
an instrumentation host (e.g. System Analyzer in CCS).
This parameter is placed into the generated UIA XML file. The
instrumentation host can use the XML file to help it auto-detect as
much as possible and act accordingly.
If the desired transport is not in the
TransportType enum,
select
TransportType_CUSTOM and set the
customTransportType string with the desired string.
metaonly LoggerStreamer2.getLoggerInstanceId() // module-wide |
|
returns the id of this logger instance
LoggerStreamer2.getLoggerInstanceId(Any inst) returns Any
metaonly LoggerStreamer2.getMetaArgs() // module-wide |
|
Returns any meta data needed to support RTA
LoggerStreamer2.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.
metaonly LoggerStreamer2.getPtrToQueueDescriptorMeta() // module-wide |
|
Each logger instance has a unique queue descriptor address that is
stored in the Event Record header to identify itself to the host.
This metaonly configuration parameter allows the UIA Metadata to
determine what the address is for each statically created logger instance
in order to emit XML code to allow the host to look up information about
the logger instance (such as its name) based on the queue descriptor
address that is stored in the event record header
LoggerStreamer2.getPtrToQueueDescriptorMeta(Any inst) returns Any
DETAILS
The pointer is returned per instance of the logger module. The
instance object is passed to the function as the first argument.
metaonly LoggerStreamer2.setPtrToQueueDescriptorMeta() // module-wide |
|
Sets the queue descriptor address in the logger's object instance data
LoggerStreamer2.setPtrToQueueDescriptorMeta(Any inst, Any queueDescriptorAdrs) returns Any
Instance Config Parameters |
|
var params = new LoggerStreamer2.Params;
// Instance config-params object
params.bufSize = SizeT 1400;
// LoggerStreamer2 instance's buffer size in MAUs (Minimum Addressable
Units e.g. Bytes)
params.context = UArg null;
// Context that can be used in exchangeFxn and primeFxn
// Function pointer to the exchange function
params.instanceId = Int16 1;
// Unique id of the LoggerStreamer2 instance
params.maxEventSize = SizeT 512;
// The maximum event size (in Maus) that can be written with a single
event. Must be less than or equal to bufSize - 64
// Function pointer to the prime function
params.ptrToQueueDescriptorMeta = Ptr null;
//
//
config LoggerStreamer2.Params.bufSize // instance |
|
LoggerStreamer2 instance's buffer size in MAUs (Minimum Addressable
Units e.g. Bytes)
var params = new LoggerStreamer2.Params;
...
params.bufSize = SizeT 1400;
DETAILS
NOTE: the buffer size must contain an integer number of 32b words
(e.g. if a MAU = 1 byte, then the buffer size must be a multiple of 4).
The buffer size must also be at least maxEventSize + 64.
C SYNOPSIS
config LoggerStreamer2.Params.context // instance |
|
Context that can be used in exchangeFxn and primeFxn
var params = new LoggerStreamer2.Params;
...
params.context = UArg null;
DETAILS
The context can be used to identify the logger instance, when
using the same
exchangeFxn or
primeFxn for
multiple LoggerStreamer2 instances. Use
getContext()
to get the logger context. The context can be changed, if needed,
by calling
setContext().
The context can be set to null if using a different exchangeFxn and primeFxn
for each LoggerStreamer2 instance.
C SYNOPSIS
config LoggerStreamer2.Params.exchangeFxn // instance |
|
Function pointer to the exchange function
var params = new LoggerStreamer2.Params;
...
DETAILS
The exchange function must return a pointer to a buffer that is word
aligned, initialized with a UIA header and the correct size. This is
called in the context of a log so generally the exchange function
should be quick to execute.
C SYNOPSIS
config LoggerStreamer2.Params.instanceId // instance |
|
Unique id of the LoggerStreamer2 instance
var params = new LoggerStreamer2.Params;
...
params.instanceId = Int16 1;
C SYNOPSIS
config LoggerStreamer2.Params.maxEventSize // instance |
|
The maximum event size (in Maus) that can be written with a single
event. Must be less than or equal to bufSize - 64
var params = new LoggerStreamer2.Params;
...
params.maxEventSize = SizeT 512;
DETAILS
The writeMemoryRange API checks to see if the event size required to
write the block of memory is larger than maxEventSize. If so, it will
split the memory range up into a number of smaller blocks and log the
blocks using separate events with a common snapshot ID in order to
allow the events to be collated and the original memory block to be
reconstructed on the host.
C SYNOPSIS
config LoggerStreamer2.Params.primeFxn // instance |
|
Function pointer to the prime function
var params = new LoggerStreamer2.Params;
...
C SYNOPSIS
config LoggerStreamer2.Params.transferType // instance |
|
var params = new LoggerStreamer2.Params;
...
C SYNOPSIS
metaonly config LoggerStreamer2.Params.ptrToQueueDescriptorMeta // instance |
|
var params = new LoggerStreamer2.Params;
...
params.ptrToQueueDescriptorMeta = Ptr null;
Static Instance Creation |
|
var params =
new LoggerStreamer2.
Params;
// Allocate instance config-params
params.config = ...
// Assign individual configs
var inst = LoggerStreamer2.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)