summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (from parent 1: 6d43510)
raw | patch | inline | side by side (from parent 1: 6d43510)
author | Sivaraj R <sivaraj@ti.com> | |
Sun, 21 Oct 2018 17:11:14 +0000 (22:41 +0530) | ||
committer | Sivaraj R <sivaraj@ti.com> | |
Mon, 22 Oct 2018 07:47:29 +0000 (13:17 +0530) |
- Fix print from multiple threads
- Added sempahore lock to project the buffer
including the print function call
Signed-off-by: Sivaraj R <sivaraj@ti.com>
- Added sempahore lock to project the buffer
including the print function call
Signed-off-by: Sivaraj R <sivaraj@ti.com>
src/fvid2_drvMgr.c | patch | blob | history |
diff --git a/src/fvid2_drvMgr.c b/src/fvid2_drvMgr.c
index c709238313b250bc43614af4880a5b9382e7e9d3..17d9fb2245aa0f7537cbdb3c6ed35e1cb5835cca 100755 (executable)
--- a/src/fvid2_drvMgr.c
+++ b/src/fvid2_drvMgr.c
/**< FDM Channel objects. */
SemaphoreP_Handle lockSem;
/**< Semaphore to protect function calls and other memory allocation. */
+ SemaphoreP_Handle printSem;
+ /**< Semaphore to protect print buffer. */
} Fdm_Object;
#if defined (FVID2_CFG_TRACE_ENABLE)
GT_0trace(Fvid2Trace, GT_ERR, "FVID2 semaphore create failed!!\r\n");
retVal = FVID2_EALLOC;
}
+ SemaphoreP_Params_init(¶ms);
+ params.mode = SemaphoreP_Mode_BINARY;
+ initValue = 1;
+ gFdmObj.printSem = SemaphoreP_create(initValue, ¶ms);
+ if (NULL == gFdmObj.printSem)
+ {
+ GT_0trace(Fvid2Trace, GT_ERR, "FVID2 semaphore create failed!!\r\n");
+ retVal = FVID2_EALLOC;
+ }
/* Free-up memory if error occurs */
if (FVID2_SOK != retVal)
SemaphoreP_delete(gFdmObj.lockSem);
gFdmObj.lockSem = NULL;
}
+ if (NULL != gFdmObj.printSem)
+ {
+ SemaphoreP_delete(gFdmObj.printSem);
+ gFdmObj.printSem = NULL;
+ }
return (retVal);
}
{
#if defined (FVID2_CFG_TRACE_ENABLE)
va_list vaArgPtr;
- uintptr_t cookie;
char *buf = NULL;
- cookie = HwiP_disable();
+ SemaphoreP_pend(gFdmObj.printSem, SemaphoreP_WAIT_FOREVER);
buf = &gRemoteDebug_serverObj.printBuf[0];
va_start(vaArgPtr, format);
(const char *) format, vaArgPtr);
va_end(vaArgPtr);
- HwiP_restore(cookie);
-
if(gFdmInitPrms.printFxn != NULL)
{
gFdmInitPrms.printFxn(buf);
}
+
+ SemaphoreP_post(gFdmObj.printSem);
#endif
return;
}