summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Nelson <sam.nelson@ti.com>2019-10-07 16:11:59 -0400
committerSam Nelson <sam.nelson@ti.com>2019-10-08 15:51:05 -0400
commita9e4bc1a9b8bc0818f88c9ba226a3185d3c50399 (patch)
tree4c1958c5df6dc2401185e9f91426dd94ef4586a7
parentc2e58c0c5d9f3de895faf57c67b0e3cefe09acc4 (diff)
downloadipc-a9e4bc1a9b8bc0818f88c9ba226a3185d3c50399.tar.gz
ListMP: Update to handle the case without Shared address translation
Fixes compiler warnings Signed-off-by: Sam Nelson <sam.nelson@ti.com>
-rw-r--r--packages/ti/sdo/ipc/ListMP.c45
1 files changed, 30 insertions, 15 deletions
diff --git a/packages/ti/sdo/ipc/ListMP.c b/packages/ti/sdo/ipc/ListMP.c
index 7a56a3b..2f04afb 100644
--- a/packages/ti/sdo/ipc/ListMP.c
+++ b/packages/ti/sdo/ipc/ListMP.c
@@ -291,7 +291,7 @@ Bool ListMP_empty(ListMP_Handle handle)
if (ti_sdo_ipc_SharedRegion_translate == FALSE) {
/* get the SRPtr for the head */
- sharedHead = (SharedRegion_SRPtr)&(attrs->head);
+ sharedHead = (SharedRegion_SRPtr)((UArg)&(attrs->head));
}
else {
/* get the SRPtr for the head */
@@ -348,7 +348,7 @@ Ptr ListMP_getHead(ListMP_Handle handle)
#endif
if (ti_sdo_ipc_SharedRegion_translate == FALSE) {
- localHeadNext = (ListMP_Elem *)attrs->head.next;
+ localHeadNext = (ListMP_Elem *)((UArg)attrs->head.next);
}
else {
localHeadNext = SharedRegion_getPtr(attrs->head.next);
@@ -369,7 +369,7 @@ Ptr ListMP_getHead(ListMP_Handle handle)
}
if (ti_sdo_ipc_SharedRegion_translate == FALSE) {
- localNext = (ListMP_Elem *)localHeadNext->next;
+ localNext = (ListMP_Elem *)((UArg)localHeadNext->next);
}
else {
localNext = SharedRegion_getPtr(localHeadNext->next);
@@ -431,7 +431,7 @@ Ptr ListMP_getTail(ListMP_Handle handle)
#endif
if (ti_sdo_ipc_SharedRegion_translate == FALSE) {
- localHeadPrev = (ListMP_Elem *)attrs->head.prev;
+ localHeadPrev = (ListMP_Elem *)((UArg)attrs->head.prev);
}
else {
localHeadPrev = SharedRegion_getPtr(attrs->head.prev);
@@ -452,7 +452,7 @@ Ptr ListMP_getTail(ListMP_Handle handle)
}
if (ti_sdo_ipc_SharedRegion_translate == FALSE) {
- localPrev = (ListMP_Elem *)localHeadPrev->prev;
+ localPrev = (ListMP_Elem *)((UArg)localHeadPrev->prev);
}
else {
localPrev = SharedRegion_getPtr(localHeadPrev->prev);
@@ -508,8 +508,13 @@ Int ListMP_insert(ListMP_Handle handle, ListMP_Elem *newElem,
key = GateMP_enter((GateMP_Handle)obj->gate);
if (ti_sdo_ipc_SharedRegion_translate == FALSE) {
- sharedNewElem = (SharedRegion_SRPtr)newElem;
- sharedCurElem = (SharedRegion_SRPtr)curElem;
+ if ((UArg)newElem > (UArg)(0xffffffffu) ||
+ (UArg)curElem > (UArg)(0xffffffffu)) {
+ GateMP_leave((GateMP_Handle)obj->gate, key);
+ return ListMP_E_FAIL;
+ }
+ sharedNewElem = (SharedRegion_SRPtr)((UArg)newElem);
+ sharedCurElem = (SharedRegion_SRPtr)((UArg)curElem);
}
else {
/* get SRPtr for newElem */
@@ -667,9 +672,13 @@ Int ListMP_putHead(ListMP_Handle handle, ListMP_Elem *elem)
id = SharedRegion_getId(elem);
if (ti_sdo_ipc_SharedRegion_translate == FALSE) {
- sharedElem = (SharedRegion_SRPtr)elem;
- sharedHead = (SharedRegion_SRPtr)&(attrs->head);
- localNextElem = (ListMP_Elem *)attrs->head.next;
+ if ((UArg)elem > (UArg)0xffffffffu) {
+ GateMP_leave((GateMP_Handle)obj->gate, key);
+ return ListMP_E_FAIL;
+ }
+ sharedElem = (SharedRegion_SRPtr)((UArg)elem);
+ sharedHead = (SharedRegion_SRPtr)((UArg)(&(attrs->head)));
+ localNextElem = (ListMP_Elem *)((UArg)attrs->head.next);
}
else {
sharedElem = SharedRegion_getSRPtr(elem, id);
@@ -679,6 +688,7 @@ Int ListMP_putHead(ListMP_Handle handle, ListMP_Elem *elem)
/* Return if the pointer is NULL */
if (localNextElem == NULL) {
+ GateMP_leave((GateMP_Handle)obj->gate, key);
return ListMP_E_FAIL;
}
@@ -740,9 +750,13 @@ Int ListMP_putTail(ListMP_Handle handle, ListMP_Elem *elem)
id = SharedRegion_getId(elem);
if (ti_sdo_ipc_SharedRegion_translate == FALSE) {
- sharedElem = (SharedRegion_SRPtr)elem;
- sharedHead = (SharedRegion_SRPtr)&(attrs->head);
- localPrevElem = (ListMP_Elem *)attrs->head.prev;
+ if ((UArg)elem > ((UArg)0xffffffffu)) {
+ GateMP_leave((GateMP_Handle)obj->gate, key);
+ return ListMP_E_FAIL;
+ }
+ sharedElem = (SharedRegion_SRPtr)((UArg)elem);
+ sharedHead = (SharedRegion_SRPtr)((UArg)(&(attrs->head)));
+ localPrevElem = (ListMP_Elem *)((UArg)attrs->head.prev);
}
else {
sharedElem = SharedRegion_getSRPtr(elem, id);
@@ -752,6 +766,7 @@ Int ListMP_putTail(ListMP_Handle handle, ListMP_Elem *elem)
/* Cross check if localPrevElem is NULL */
if (localPrevElem == NULL) {
+ GateMP_leave((GateMP_Handle)obj->gate, key);
return ListMP_E_FAIL;
}
@@ -802,8 +817,8 @@ Int ListMP_remove(ListMP_Handle handle, ListMP_Elem *elem)
key = GateMP_enter((GateMP_Handle)obj->gate);
if (ti_sdo_ipc_SharedRegion_translate == FALSE) {
- localPrevElem = (ListMP_Elem *)(elem->prev);
- localNextElem = (ListMP_Elem *)(elem->next);
+ localPrevElem = (ListMP_Elem *)((UArg)(elem->prev));
+ localNextElem = (ListMP_Elem *)((UArg)(elem->next));
}
else {
localPrevElem = SharedRegion_getPtr(elem->prev);