MessageQCopy_init: Hide from clients, only call once in IpcMgr_startRpmsg()
authorG Anthony <a0783926@ti.com>
Fri, 22 Feb 2013 01:57:19 +0000 (17:57 -0800)
committerG Anthony <a0783926@ti.com>
Tue, 26 Feb 2013 18:15:44 +0000 (10:15 -0800)
MessageQCopy_init() is moved out of client code, only called once.

This simplifies MessageQCopy by removing the module semaphore previously
introduced to serialize access.

Thus, this commit from the omapzoom.org, sysbios-rpmsg repo:

"f0162b15ae43f7ab8fd5e6aa83327de1cd5230b9 IPC: Fix a race condition in MessageQCopy initialization"

is rendered unnecessary.

Signed-off-by: G Anthony <a0783926@ti.com>
src/ti/ipc/ipcmgr/IpcMgr.c

index e8cd70af2c6e537c2629eef9b7ae608182aeec68..381aae39c6c1f7af1a483581b1eb435d3cafb77b 100644 (file)
@@ -31,6 +31,7 @@
  */
 /*
  *  ======== IpcMgr.c ========
+ *  Various IPC stack backplane startup fxns.
  */
 
 #include <xdc/std.h>
 #include <ti/ipc/MultiProc.h>
 #include <ti/ipc/namesrv/NameServerRemoteRpmsg.h>
 #include <ti/ipc/transports/TransportVirtioSetup.h>
+#include <ti/ipc/rpmsg/_MessageQCopy.h>
+
+/*
+ *  ======== IpcMgr_rpmsgStartup ========
+ *  Initialize the RPMSG module.  This calls VirtQueue_startup().
+ */
+Void IpcMgr_rpmsgStartup()
+{
+    Assert_isTrue(MultiProc_self() != MultiProc_getId("HOST"), NULL);
+    MessageQCopy_init(MultiProc_getId("HOST"));
+}
 
 /*
  *  ======== IpcMgr_ipcStartup ========
+ *  Initialize MessageQ Transport stack built over RPMSG.
  */
 Void IpcMgr_ipcStartup()
 {
@@ -60,6 +73,8 @@ Void IpcMgr_ipcStartup()
 
 /*
  *  ======== IpcMgr_callIpcStart ========
+ *  Initialize standard IPC module, which may use the RPMSG protocol as well.
+ *
  *  Calls the Ipc_start command.  This must be done
  *  after IpcMgr_ipcStartup().
  */