nsremote: Add additional check to handle assert disabled
[ipc/ipcdev.git] / packages / ti / sdo / ipc / nsremote / NameServerMessageQ.c
index 156310be09419ece0053d20f0625eba6b1a90d2d..1f0b3a61483db4e5130f76a1d3d4cd403b5c7898 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
+ * Copyright (c) 2012-2015 Texas Instruments Incorporated - http://www.ti.com
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -61,7 +61,9 @@
  */
 #define MAXNAMEINCHAR   (NameServerMessageQ_maxNameLen / \
                         (xdc_target__bitsPerChar / 8))
-#define NAMEARRAYSZIE   (((MAXNAMEINCHAR - 1) / sizeof(Bits32)) + 1)
+#define NAMEARRAYSIZE   (((MAXNAMEINCHAR - 1) / sizeof(Bits32)) + 1)
+
+#define MESSAGEQ_INDEX 0
 
 /* message sent to remote procId */
 typedef struct NameServerMsg {
@@ -71,9 +73,9 @@ typedef struct NameServerMsg {
     Bits32  requestStatus;      /* status of request                */
     Bits32  reserved;           /* reserved field                   */
                                 /* name of NameServer instance      */
-    Bits32  instanceName[NAMEARRAYSZIE];
+    Bits32  instanceName[NAMEARRAYSIZE];
                                 /* name of NameServer entry         */
-    Bits32  name[NAMEARRAYSZIE];
+    Bits32  name[NAMEARRAYSIZE];
 } NameServerMsg;
 
 /*
@@ -117,7 +119,8 @@ Void NameServerMessageQ_Instance_finalize(NameServerMessageQ_Object *obj)
  */
 Int NameServerMessageQ_Module_startup(Int phase)
 {
-    MessageQ_Params  messageQParams;
+    MessageQ_Params2  messageQParams;
+    MessageQ_QueueId queueId;
 
     /* Ensure MessageQ and SyncSwi Module_startup() have completed */
     if ((ti_sdo_ipc_MessageQ_Module_startupDone() == FALSE) ||
@@ -126,19 +129,29 @@ Int NameServerMessageQ_Module_startup(Int phase)
     }
 
     /* Create the message queue for NameServer using SyncSwi */
-    MessageQ_Params_init(&messageQParams);
+    MessageQ_Params2_init(&messageQParams);
     messageQParams.synchronizer = NameServerMessageQ_module->syncSwiHandle;
+    messageQParams.queueIndex = MESSAGEQ_INDEX;
     NameServerMessageQ_module->msgHandle =
-        (ti_sdo_ipc_MessageQ_Handle)MessageQ_create(NULL, &messageQParams);
+        (ti_sdo_ipc_MessageQ_Handle)MessageQ_create2(NULL, &messageQParams);
 
     /* assert msgHandle is not null */
     Assert_isTrue(NameServerMessageQ_module->msgHandle != NULL,
         Ipc_A_nullPointer);
+    /* Additonal check for case with  assert disabled */
+    if(NameServerMessageQ_module->msgHandle == NULL) {
+        return Startup_NOTDONE;
+    }
 
+    queueId = MessageQ_getQueueId((MessageQ_Handle)
+                                  NameServerMessageQ_module->msgHandle);
     /* assert this is the first MessageQ created */
-    Assert_isTrue((MessageQ_getQueueId((MessageQ_Handle)
-        NameServerMessageQ_module->msgHandle) & 0xffff) == 0,
+    Assert_isTrue( (queueId & 0xffff) == MESSAGEQ_INDEX,
         NameServerMessageQ_A_reservedMsgQueueId);
+    /* Additonal check for case with  assert disabled */
+    if ((queueId & 0xffff) != MESSAGEQ_INDEX) {
+        return Startup_NOTDONE;
+    }
 
     return (Startup_DONE);
 }
@@ -207,7 +220,6 @@ Int NameServerMessageQ_get(NameServerMessageQ_Object *obj,
                            ISync_Handle syncHandle,
                            Error_Block *eb)
 {
-    Int len;
     Int status;
     IArg key;
     MessageQ_QueueId queueId;
@@ -233,26 +245,24 @@ Int NameServerMessageQ_get(NameServerMessageQ_Object *obj,
     msg->request = NameServerMessageQ_REQUEST;
     msg->requestStatus = 0;
 
-    /* get the length of instanceName */
-    len = strlen(instanceName);
-
     /* assert length is smaller than max (must have room for null character) */
-    Assert_isTrue(len < MAXNAMEINCHAR, NameServerMessageQ_A_nameIsTooLong);
+    Assert_isTrue(strlen(instanceName) < MAXNAMEINCHAR,
+            NameServerMessageQ_A_nameIsTooLong);
 
     /* copy the name of instance into putMsg */
-    strncpy((Char *)msg->instanceName, instanceName, len);
-
-    /* get the length of name */
-    len = strlen(name);
+    strncpy((Char *)msg->instanceName, instanceName, MAXNAMEINCHAR - 1);
+    ((Char *)msg->instanceName) [MAXNAMEINCHAR - 1] = '0';
 
     /* assert length is smaller than max (must have room for null character) */
-    Assert_isTrue(len < MAXNAMEINCHAR, NameServerMessageQ_A_nameIsTooLong);
+    Assert_isTrue(strlen(name) < MAXNAMEINCHAR,
+            NameServerMessageQ_A_nameIsTooLong);
 
     /* copy the name of nameserver entry into putMsg */
-    strncpy((Char *)msg->name, name, len);
+    strncpy((Char *)msg->name, name, MAXNAMEINCHAR - 1);
+    ((Char *)msg->name) [MAXNAMEINCHAR - 1] = '0';
 
     /* determine the queueId based upon the processor */
-    queueId = (UInt32)obj->remoteProcId << 16;
+    queueId = MessageQ_openQueueId(MESSAGEQ_INDEX, obj->remoteProcId);
 
     /* set the reply procId */
     MessageQ_setReplyQueue(