The RTSC module must be used in the application's RTSC configuration file
(.cfg) if runtime APIs will be used in the application:
Documentation for all runtime APIs, instance configuration parameters,
error codes macros and type definitions available to the application
integrator can be found in the
<A HREF="../../../../doxygen/html/files.html">Doxygen documenation</A>
for the IPC product. However, the documentation presented on this page
should be referred to for information specific to the RTSC module, such as
module configuration, Errors, and Asserts.
struct HeapMemMP.ExtendedStats |
 |
Stats structure for the getExtendedStats API
XDCscript usage |
meta-domain |
var obj = new HeapMemMP.ExtendedStats;
obj.buf = Ptr ...
obj.size = SizeT ...
typedef struct HeapMemMP_ExtendedStats {
Ptr buf;
SizeT size;
} HeapMemMP_ExtendedStats;
FIELDS
buf
Local address of the shared buffer
This may be different from the original buf
parameter due to alignment requirements.
size
Size of the shared buffer.
This may be different from the original size
parameter due to alignment requirements.
config HeapMemMP.A_align // module-wide |
 |
Assert raised when the requested alignment is not a power of 2
XDCscript usage |
meta-domain |
msg: "A_align: Requested align is not a power of 2"
};
config HeapMemMP.A_heapSize // module-wide |
 |
Assert raised when the requested heap size is too small
XDCscript usage |
meta-domain |
msg: "A_heapSize: Requested heap size is too small"
};
config HeapMemMP.A_invalidFree // module-wide |
 |
Assert raised when the free detects that an invalid addr or size
XDCscript usage |
meta-domain |
msg: "A_invalidFree: Invalid free"
};
extern const Assert_Id HeapMemMP_A_invalidFree;
DETAILS
This could arise when multiple frees are done on the same buffer or
if corruption occurred.
This also could occur when an alloc is made with size N and the
free for this buffer specifies size M where M > N. Note: not every
case is detectable.
This assert can also be caused when passing an invalid addr to free
or if the size is causing the end of the buffer to be
out of the expected range.
config HeapMemMP.A_zeroBlock // module-wide |
 |
Assert raised when a block of size 0 is requested
XDCscript usage |
meta-domain |
msg: "A_zeroBlock: Cannot allocate size 0"
};
extern const Assert_Id HeapMemMP_A_zeroBlock;
config HeapMemMP.maxNameLen // module-wide |
 |
Maximum length for heap names
XDCscript usage |
meta-domain |
HeapMemMP.maxNameLen = UInt 32;
extern const UInt HeapMemMP_maxNameLen;
metaonly config HeapMemMP.common$ // module-wide |
 |
Common module configuration parameters
XDCscript usage |
meta-domain |
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 HeapMemMP.maxRuntimeEntries // module-wide |
 |
Maximum runtime entries
XDCscript usage |
meta-domain |
DETAILS
Maximum number of HeapMemMP's that can be dynamically created and
added to the NameServer.
To minimize the amount of runtime allocation, this parameter allows
the pre-allocation of memory for the HeapMemMP's NameServer table.
The default is to allow growth (i.e. memory allocation when
creating a new instance).
metaonly config HeapMemMP.tableSection // module-wide |
 |
Section name is used to place the names table
XDCscript usage |
meta-domain |
HeapMemMP.tableSection = String null;
DETAILS
The default value of NULL implies that no explicit placement is
performed.
module-wide built-ins |
 |
// Get this module's unique id
Bool HeapMemMP_Module_startupDone( );
// Test if this module has completed startup
// The heap from which this module allocates memory
Bool HeapMemMP_Module_hasMask( );
// Test whether this module has a diagnostics mask
Bits16 HeapMemMP_Module_getMask( );
// Returns the diagnostics mask for this module
Void HeapMemMP_Module_setMask( Bits16 mask );
// Set the diagnostics mask for this module
per-instance object types |
 |
typedef struct HeapMemMP_Object HeapMemMP_Object;
// Opaque internal representation of an instance object
// Client reference to an instance object
typedef struct HeapMemMP_Struct HeapMemMP_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
per-instance config parameters |
 |
XDCscript usage |
meta-domain |
var params = new HeapMemMP.Params;
// Instance config-params object
// GateMP used for critical region management of the shared memory
params.name = String null;
// Name of this instance
params.openFlag = Bool false;
//
params.regionId = UInt32 0;
// Shared region ID
params.sharedAddr = Ptr null;
//
params.sharedBufSize = SizeT 0;
// Size of {@link #sharedBuf}
typedef struct HeapMemMP_Params {
// Instance config-params structure
// Common per-instance configs
// GateMP used for critical region management of the shared memory
String name;
// Name of this instance
Bool openFlag;
//
UInt32 regionId;
// Shared region ID
Ptr sharedAddr;
//
SizeT sharedBufSize;
// Size of {@link #sharedBuf}
} HeapMemMP_Params;
// Initialize this config-params structure with supplier-specified defaults before instance creation
config HeapMemMP.gate // per-instance |
 |
GateMP used for critical region management of the shared memory
XDCscript usage |
meta-domain |
var params = new HeapMemMP.Params;
...
DETAILS
Using the default value of NULL will result in use of the GateMP
system gate for context protection.
config HeapMemMP.name // per-instance |
 |
Name of this instance
XDCscript usage |
meta-domain |
var params = new HeapMemMP.Params;
...
params.name = String null;
DETAILS
The name (if not NULL) must be unique among all HeapMemMP
instances in the entire system. When creating a new
heap, it is necessary to supply an instance name.
config HeapMemMP.regionId // per-instance |
 |
Shared region ID
XDCscript usage |
meta-domain |
var params = new HeapMemMP.Params;
...
params.regionId = UInt32 0;
DETAILS
The index corresponding to the shared region from which shared memory
will be allocated.
config HeapMemMP.sharedBufSize // per-instance |
 |
Size of sharedBuf
XDCscript usage |
meta-domain |
var params = new HeapMemMP.Params;
...
params.sharedBufSize = SizeT 0;
DETAILS
This is the size of the buffer to be used in the HeapMemMP instance.
The actual buffer size in the created instance might actually be less
than the value supplied in 'sharedBufSize' because of alignment
constraints.
It is important to note that the total amount of shared memory required
for a HeapMemMP instance will be greater than the size supplied here.
Additional space will be consumed by shared instance attributes and
alignment-related padding. Use the
sharedMemReq or the
sharedMemReqMeta call to determine the exact amount of shared
memory required for an instance for a given sharedBufSize and cache
settings.
per-instance creation |
 |
XDCscript usage |
meta-domain |
var params =
new HeapMemMP.
Params;
// Allocate instance config-params
params.config = ...
// Assign individual configs
var inst = HeapMemMP.create( params );
// Create an instance-object
// 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)
DETAILS
See specific IHeap implementation for parameters used.
per-instance deletion |
 |
// Finalize and free this previously allocated instance object, setting the referenced handle to NULL
// Finalize the instance object inside the provided structure
HeapMemMP.alloc( ) // per-instance |
 |
Allocates a block of memory from the heap
ARGUMENTS
handle
handle of a previously-created HeapMemMP instance object
size
size (in MADUs) of the block
align
alignment (in MADUs) of the block
eb
pointer to error block
DETAILS
This method returns a block of memory from the heap.
It is called by the
xdc.runtime.Memory.alloc() function.
RETURNS
Returns the address of the allocated memory.
HeapMemMP.free( ) // per-instance |
 |
Free a block of memory back to the heap
ARGUMENTS
handle
handle of a previously-created HeapMemMP instance object
block
non-NULL address of allocated block to free
size
size (in MADUs) of the block of memory to free
DETAILS
This method gives back a block of memory to a heap.
It is called by the
xdc.runtime.Memory.free() function.
HeapMemMP.getStats( ) // per-instance |
 |
Retrieve the statistics from the heap
ARGUMENTS
handle
handle of a previously-created HeapMemMP instance object
stats
non-NULL pointer to an output buffer
DETAILS
The caller passes in a pointer to a
xdc.runtime.Memory.Stats
structure and
getStats fills in this structure.
This function is called by the
xdc.runtime.Memory.getStats()
function.
The returned totalSize reflects the usable size of the buffer, not
necessarily the size specified during create.
HEAPMEMMP
getStats() will lock the heap using the HeapMemMP Gate while it retrieves
the HeapMemMP's statistics.
HeapMemMP.isBlocking( ) // per-instance |
 |
Returns whether the heap may block during an alloc() or
free()
ARGUMENTS
handle
handle of a previously-created HeapMemMP instance object
RETURNS
If the heap might block, TRUE is returned.
If the heap does not block, FALSE is returned.
per-instance convertors |
 |
// unconditionally move one level up the inheritance hierarchy
// conditionally move one level down the inheritance hierarchy; NULL upon failure
per-instance built-ins |
 |
Int HeapMemMP_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