SysLink-IPC: RCM - Introduce RCM design enhancements
authorShahid Akhtar <sakhtar@ti.com>
Tue, 19 Oct 2010 21:12:11 +0000 (16:12 -0500)
committerSuman Anna <s-anna@ti.com>
Sat, 30 Oct 2010 03:15:31 +0000 (22:15 -0500)
commit7536aa31c029cf92b5b0cb8a56a06e2cb1ad853f
treef04ae55c53a4c66f483e6119950d4446961678a7
parent488eadc92621202b409401f15d73f0482a1f5234
SysLink-IPC: RCM - Introduce RCM design enhancements

This patch introduces two new RCM design enhancements:
1. RCM Server Worker pool threads
The RCM worker thread pool allows users to prioritize each call
to RCM server. If you create an RcmServer instance using just the
default values, the default pool will not have any threads. All
messages sent to the default pool will be processed by the server
thread function (in-band processing). The RCM server allows for
creation of static worker thread pools during create phase. Dynamic
creation of worker thread pools is not supported at this time.

On the client side, RcmClient_alloc() will initialize the message
with "poolId = RcmClient_DEFAULTPOOLID (this is default value)"
thus addressing the message to the default pool. The user can
change the poolId to send the message to a particular thread.
When the server thread function receives this message, it checks
the poolId to route the message to correct worker pool thread
or process the message itself (in-band processing). Similarly, the
user can set a jobId (which is set to RcmClient_DISCRETEJOBID by
default) for a group of messages which needs to be processed
sequentially.

2. Error Checking on uni-directional RCM messages
The RCM Client now has an error queue to which all the failed
RcmClient_execCmd (formerly RcmClient_execNoReply) RCM messages
are returned to. The user can check for these messages using the
new RcmClient_checkForError API.

Signed-off-by: Shahid Akhtar <sakhtar@ti.com>
Signed-off-by: Suman Anna <s-anna@ti.com>
packages/ti/sdo/rcm/RcmClient.c
packages/ti/sdo/rcm/RcmClient.h
packages/ti/sdo/rcm/RcmClient.xs
packages/ti/sdo/rcm/RcmServer.c
packages/ti/sdo/rcm/RcmServer.h
packages/ti/sdo/rcm/RcmServer.xs
packages/ti/sdo/rcm/RcmTypes.h