summaryrefslogtreecommitdiff
path: root/lcmodule/source/cnh1605551_ldr_utilities/critical_section/critical_section.c
diff options
context:
space:
mode:
Diffstat (limited to 'lcmodule/source/cnh1605551_ldr_utilities/critical_section/critical_section.c')
-rw-r--r--[-rwxr-xr-x]lcmodule/source/cnh1605551_ldr_utilities/critical_section/critical_section.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/lcmodule/source/cnh1605551_ldr_utilities/critical_section/critical_section.c b/lcmodule/source/cnh1605551_ldr_utilities/critical_section/critical_section.c
index 126d3e7..b6dafd3 100755..100644
--- a/lcmodule/source/cnh1605551_ldr_utilities/critical_section/critical_section.c
+++ b/lcmodule/source/cnh1605551_ldr_utilities/critical_section/critical_section.c
@@ -39,10 +39,12 @@
*/
CriticalSection_t Do_CriticalSection_Create(void)
{
- uint32 *cs = (uint32*)malloc(sizeof(uint32));
+ uint32 *cs = (uint32 *)malloc(sizeof(uint32));
+
if (NULL != cs) {
*cs = CS_UNLOCKED;
}
+
return cs;
}
@@ -58,7 +60,7 @@ CriticalSection_t Do_CriticalSection_Create(void)
*/
void Do_CriticalSection_Destroy(CriticalSection_t *CriticalSectionObject)
{
- uint32** cs = (uint32**)CriticalSectionObject;
+ uint32 **cs = (uint32 **)CriticalSectionObject;
if (NULL != *cs) {
free(*cs);
@@ -80,9 +82,11 @@ void Do_CriticalSection_Destroy(CriticalSection_t *CriticalSectionObject)
boolean Do_CriticalSection_Enter(CriticalSection_t CriticalSectionObject)
{
volatile uint32 *cs = (volatile uint32 *)CriticalSectionObject;
+
if (NULL != cs) {
uint32 cs_status = CS_LOCKED;
cs_status = Do_Atomic_CompareAndSwap(cs, CS_UNLOCKED, CS_LOCKED);
+
if (CS_UNLOCKED == cs_status) {
return TRUE;
} else {
@@ -108,9 +112,11 @@ boolean Do_CriticalSection_Enter(CriticalSection_t CriticalSectionObject)
void Do_CriticalSection_Leave(CriticalSection_t CriticalSectionObject)
{
volatile uint32 *cs = (volatile uint32 *)CriticalSectionObject;
+
if (NULL != cs) {
uint32 cs_status = CS_UNLOCKED;
cs_status = Do_Atomic_CompareAndSwap(cs, CS_LOCKED, CS_UNLOCKED);
+
if (CS_LOCKED == cs_status) {
/* SUCCESS */
} else {