module ti.sdo.ipc.Ipc

IPC Master Manager

This module has a common header that can be found in the ti.ipc package. Application code should include the common header file (not the RTSC-generated one):
#include <ti/ipc/Ipc.h>
The RTSC module must be used in the application's RTSC configuration file (.cfg):
Ipc = xdc.useModule('ti.sdo.ipc.Ipc');
Documentation for all runtime APIs, instance configuration parameters, error codes macros and type definitions available to the application integrator can be found in the Doxygen documenation 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. [ more ... ]
XDCspec summary sourced in ti/sdo/ipc/Ipc.xdc
module Ipc {  ...
// inherits xdc.runtime.IModule
C synopsis target-domain
#include <ti/sdo/ipc/Ipc.h>
module-wide constants & types
    } Ipc_ProcSync;
 
        UInt16 remoteProcId// Remote processor id;
    } Ipc_Entry;
module-wide config parameters
module-wide built-ins
 
XDCscript usage meta-domain
var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');
module-wide constants & types
 
        obj.remoteProcId// Remote processor id = UInt16  ...
        obj.setupNotify// Whether to setup Notify = Bool  ...
        obj.setupMessageQ// Whether to setup MessageQ = Bool  ...
module-wide config parameters
        msg: "A_addrNotCacheAligned: Address is not cache aligned"
    };
        msg: "A_addrNotInSharedRegion: Address not in any shared region"
    };
        msg: "A_internal: An internal error has occurred"
    };
        msg: "A_invArgument: Invalid argument supplied"
    };
        msg: "A_invParam: Invalid configuration parameter supplied"
    };
        msg: "A_nullArgument: Required argument is null"
    };
        msg: "A_nullPointer: Pointer is null"
    };
        msg: "E_versionMismatch: IPC Module version mismatch: creator: %d, opener: %d"
    };
 
module-wide functions
 
XDCspec declarations sourced in ti/sdo/ipc/Ipc.xdc
package ti.sdo.ipc;
 
module Ipc {
module-wide constants & types
    };
 
        UInt16 remoteProcId// Remote processor id;
    };
module-wide config parameters
        msg: "A_addrNotCacheAligned: Address is not cache aligned"
    };
        msg: "A_addrNotInSharedRegion: Address not in any shared region"
    };
        msg: "A_internal: An internal error has occurred"
    };
        msg: "A_invArgument: Invalid argument supplied"
    };
        msg: "A_invParam: Invalid configuration parameter supplied"
    };
        msg: "A_nullArgument: Required argument is null"
    };
        msg: "A_nullPointer: Pointer is null"
    };
        msg: "E_versionMismatch: IPC Module version mismatch: creator: %d, opener: %d"
    };
 
module-wide functions
}
DETAILS
This module has a common header that can be found in the ti.ipc package. Application code should include the common header file (not the RTSC-generated one):
#include <ti/ipc/Ipc.h>
The RTSC module must be used in the application's RTSC configuration file (.cfg):
Ipc = xdc.useModule('ti.sdo.ipc.Ipc');
Documentation for all runtime APIs, instance configuration parameters, error codes macros and type definitions available to the application integrator can be found in the Doxygen documenation 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.
The most common static configuration that is required of the Ipc module is the procSync configuration that affects the behavior of the Ipc_start and Ipc_attach runtime APIs.
Additionally, certain subsystems of IPC (such as Notify and MessageQ) can be disabled to save resources on a per-connection basis by configuring Ipc using setEntryMeta.
 
enum Ipc.ProcSync

Various configuration options for procSync

XDCscript usage meta-domain
values of type Ipc.ProcSync
    const Ipc.ProcSync_NONE;
    // ProcSync_PAIR with no synchronization
    const Ipc.ProcSync_PAIR;
    // Ipc_start does not Ipc_attach
    const Ipc.ProcSync_ALL;
    // Ipc_start attach to all remote procs
C synopsis target-domain
typedef enum Ipc_ProcSync {
    Ipc_ProcSync_NONE,
    // ProcSync_PAIR with no synchronization
    Ipc_ProcSync_PAIR,
    // Ipc_start does not Ipc_attach
    Ipc_ProcSync_ALL
    // Ipc_start attach to all remote procs
} Ipc_ProcSync;
 
DETAILS
The values in this enum affect the behavior of the Ipc_start and Ipc_attach runtime APIs.
ProcSync_ALL: Calling Ipc_start will also internally Ipc_attach to each remote processor. The application should never call Ipc_attach. This type of startup and synchronization should be used if all IPC processors on a device start up at the same time and connections should be established between every possible pair of processors.
ProcSync_PAIR (default): Calling Ipc_start will perform system-wide IPC initialization required on all processor, but connections to remote processors will not be established (i.e. Ipc_attach will never be called). This configuration should be chosen if synchronization is required and some/all these conditions are true:
  • It is necessary to control when synchronization with each remote processor occurs
  • Useful work can be done while trying to synchronize with a remote processor by yielding a thread after each attempt to Ipc_attach to the processor.
  • Connections to all remote processors are unnecessary and connections should selectively be made to save memory
NOTE: A connection should be made to the owner of region 0 (usually the processor with id = 0) before any connection to any other remote processor can be made. For example, if there are three processors configured with MultiProc, #1 should attach to #0 before it can attach to #2.
ProcSync_NONE: This should be selected with caution. Ipc_start will work exactly as it does with ProcSync_PAIR. However, Ipc_attach will not synchronize with the remote processor. Callers of Ipc_attach are bound by the same restrictions imposed by using ProcSync_PAIR. Additionally, an Ipc_attach to a remote processor whose id is less than our own has to occur *after* the corresponding remote processor has called attach to the original processor. For example, processor #2 can call
  Ipc_attach(1); 
only after processor #1 has called:
  Ipc_attach(2); 
 
struct Ipc.Entry

Struct used for configuration via setEntryMeta

XDCscript usage meta-domain
var obj = new Ipc.Entry;
 
    obj.remoteProcId = UInt16  ...
    // Remote processor id
    obj.setupNotify = Bool  ...
    // Whether to setup Notify
    obj.setupMessageQ = Bool  ...
    // Whether to setup MessageQ
C synopsis target-domain
typedef struct Ipc_Entry {
    UInt16 remoteProcId;
    // Remote processor id
    Bool setupNotify;
    // Whether to setup Notify
    Bool setupMessageQ;
    // Whether to setup MessageQ
} Ipc_Entry;
 
DETAILS
This structure defines the fields that are to be configured between the executing processor and a remote processor.
 
config Ipc.A_addrNotCacheAligned  // module-wide

Error raised when an address is not cache-aligned

XDCscript usage meta-domain
Ipc.A_addrNotCacheAligned = Assert.Desc {
    msg: "A_addrNotCacheAligned: Address is not cache aligned"
};
C synopsis target-domain
extern const Assert_Id Ipc_A_addrNotCacheAligned;
 
 
config Ipc.A_addrNotInSharedRegion  // module-wide

Assert raised when an address lies outside all known shared regions

XDCscript usage meta-domain
Ipc.A_addrNotInSharedRegion = Assert.Desc {
    msg: "A_addrNotInSharedRegion: Address not in any shared region"
};
C synopsis target-domain
extern const Assert_Id Ipc_A_addrNotInSharedRegion;
 
 
config Ipc.A_internal  // module-wide

Assert raised when an internal error is encountered

XDCscript usage meta-domain
Ipc.A_internal = Assert.Desc {
    msg: "A_internal: An internal error has occurred"
};
C synopsis target-domain
extern const Assert_Id Ipc_A_internal;
 
 
config Ipc.A_invArgument  // module-wide

Assert raised when an argument is invalid

XDCscript usage meta-domain
Ipc.A_invArgument = Assert.Desc {
    msg: "A_invArgument: Invalid argument supplied"
};
C synopsis target-domain
extern const Assert_Id Ipc_A_invArgument;
 
 
config Ipc.A_invParam  // module-wide

Assert raised when a parameter is invalid

XDCscript usage meta-domain
Ipc.A_invParam = Assert.Desc {
    msg: "A_invParam: Invalid configuration parameter supplied"
};
C synopsis target-domain
extern const Assert_Id Ipc_A_invParam;
 
 
config Ipc.A_nullArgument  // module-wide

Assert raised when a required argument is null

XDCscript usage meta-domain
Ipc.A_nullArgument = Assert.Desc {
    msg: "A_nullArgument: Required argument is null"
};
C synopsis target-domain
extern const Assert_Id Ipc_A_nullArgument;
 
 
config Ipc.A_nullPointer  // module-wide

Assert raised when a pointer is null

XDCscript usage meta-domain
Ipc.A_nullPointer = Assert.Desc {
    msg: "A_nullPointer: Pointer is null"
};
C synopsis target-domain
extern const Assert_Id Ipc_A_nullPointer;
 
 
config Ipc.E_versionMismatch  // module-wide

Error raised when a version mismatch occurs

XDCscript usage meta-domain
Ipc.E_versionMismatch = Error.Desc {
    msg: "E_versionMismatch: IPC Module version mismatch: creator: %d, opener: %d"
};
C synopsis target-domain
extern const Error_Id Ipc_E_versionMismatch;
 
DETAILS
Error raised in an open call because there is a version mismatch between the opener and the creator
 
config Ipc.procSync  // module-wide

Affects how Ipc_start and Ipc_attach behave

XDCscript usage meta-domain
C synopsis target-domain
extern const Ipc_ProcSync Ipc_procSync;
 
DETAILS
Refer to the documentation for the ProcSync enum for information about the various ProcSync options.
 
config Ipc.userFxn  // module-wide

Attach and Detach hooks

XDCscript usage meta-domain
Ipc.userFxn = Ipc.UserFxn undefined;
C synopsis target-domain
extern const Ipc_UserFxn Ipc_userFxn;
 
 
metaonly config Ipc.common$  // module-wide

Common module configuration parameters

XDCscript usage meta-domain
Ipc.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 Ipc.hostProcId  // module-wide

host processor identifier

XDCscript usage meta-domain
Ipc.hostProcId = UInt16 MultiProc.INVALIDID;
 
 
metaonly config Ipc.sr0MemorySetup  // module-wide

Shared memory is present or not for shared region 0 entry

XDCscript usage meta-domain
Ipc.sr0MemorySetup = Bool undefined;
 
 
metaonly Ipc.setEntryMeta( )  // module-wide

Sets the properties for when one processors attaches to another

XDCscript usage meta-domain
Ipc.setEntryMeta( Ipc.Entry entry ) returns Void
 
 
module-wide built-ins

C synopsis target-domain
Types_ModuleId Ipc_Module_id( );
// Get this module's unique id
 
Bool Ipc_Module_startupDone( );
// Test if this module has completed startup
 
IHeap_Handle Ipc_Module_heap( );
// The heap from which this module allocates memory
 
Bool Ipc_Module_hasMask( );
// Test whether this module has a diagnostics mask
 
Bits16 Ipc_Module_getMask( );
// Returns the diagnostics mask for this module
 
Void Ipc_Module_setMask( Bits16 mask );
// Set the diagnostics mask for this module
generated on Fri, 09 Apr 2010 01:41:05 GMT