diff options
Diffstat (limited to 'lcmodule/source/cnh1605551_ldr_utilities')
-rw-r--r--[-rwxr-xr-x] | lcmodule/source/cnh1605551_ldr_utilities/critical_section/critical_section.c | 10 | ||||
-rw-r--r--[-rwxr-xr-x] | lcmodule/source/cnh1605551_ldr_utilities/critical_section/critical_section_linux.c | 12 | ||||
-rw-r--r--[-rwxr-xr-x] | lcmodule/source/cnh1605551_ldr_utilities/critical_section/critical_section_win32.c | 13 | ||||
-rw-r--r--[-rwxr-xr-x] | lcmodule/source/cnh1605551_ldr_utilities/critical_section/t_critical_section.h | 0 |
4 files changed, 25 insertions, 10 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 { diff --git a/lcmodule/source/cnh1605551_ldr_utilities/critical_section/critical_section_linux.c b/lcmodule/source/cnh1605551_ldr_utilities/critical_section/critical_section_linux.c index 0114a47..0a43a31 100755..100644 --- a/lcmodule/source/cnh1605551_ldr_utilities/critical_section/critical_section_linux.c +++ b/lcmodule/source/cnh1605551_ldr_utilities/critical_section/critical_section_linux.c @@ -39,10 +39,11 @@ CriticalSection_t Do_CriticalSection_Create(void) { int result = -1; - pthread_mutex_t* cs = (pthread_mutex_t*)malloc(sizeof(pthread_mutex_t)); + pthread_mutex_t *cs = (pthread_mutex_t *)malloc(sizeof(pthread_mutex_t)); if (NULL != cs) { result = pthread_mutex_init(cs, NULL); + if (0 != result) { free(cs); cs = NULL; @@ -64,10 +65,11 @@ CriticalSection_t Do_CriticalSection_Create(void) */ void Do_CriticalSection_Destroy(CriticalSection_t *CriticalSectionObject) { - pthread_mutex_t** cs = (pthread_mutex_t**)CriticalSectionObject; + pthread_mutex_t **cs = (pthread_mutex_t **)CriticalSectionObject; if (NULL != *cs) { while (0 != pthread_mutex_destroy(*cs)); + free(*cs); *cs = NULL; } @@ -86,7 +88,8 @@ void Do_CriticalSection_Destroy(CriticalSection_t *CriticalSectionObject) */ boolean Do_CriticalSection_Enter(CriticalSection_t CriticalSectionObject) { - pthread_mutex_t* cs = (pthread_mutex_t*)CriticalSectionObject; + pthread_mutex_t *cs = (pthread_mutex_t *)CriticalSectionObject; + if (NULL != cs) { while (0 != pthread_mutex_lock(cs)); } @@ -108,7 +111,8 @@ boolean Do_CriticalSection_Enter(CriticalSection_t CriticalSectionObject) */ void Do_CriticalSection_Leave(CriticalSection_t CriticalSectionObject) { - pthread_mutex_t* cs = (pthread_mutex_t*)CriticalSectionObject; + pthread_mutex_t *cs = (pthread_mutex_t *)CriticalSectionObject; + if (NULL != cs) { while (0 != pthread_mutex_unlock(cs)); } diff --git a/lcmodule/source/cnh1605551_ldr_utilities/critical_section/critical_section_win32.c b/lcmodule/source/cnh1605551_ldr_utilities/critical_section/critical_section_win32.c index 49e93fc..c0c9a44 100755..100644 --- a/lcmodule/source/cnh1605551_ldr_utilities/critical_section/critical_section_win32.c +++ b/lcmodule/source/cnh1605551_ldr_utilities/critical_section/critical_section_win32.c @@ -36,10 +36,12 @@ */ CriticalSection_t Do_CriticalSection_Create(void) { - CRITICAL_SECTION* cs = (CRITICAL_SECTION*)malloc(sizeof(CRITICAL_SECTION)); + CRITICAL_SECTION *cs = (CRITICAL_SECTION *)malloc(sizeof(CRITICAL_SECTION)); + if (NULL != cs) { InitializeCriticalSection(cs); } + return (CriticalSection_t)cs; } @@ -55,7 +57,8 @@ CriticalSection_t Do_CriticalSection_Create(void) */ void Do_CriticalSection_Destroy(CriticalSection_t *CriticalSectionObject) { - CRITICAL_SECTION** cs = (CRITICAL_SECTION**)CriticalSectionObject; + CRITICAL_SECTION **cs = (CRITICAL_SECTION **)CriticalSectionObject; + if (NULL != *cs) { DeleteCriticalSection(*cs); free(*cs); @@ -76,7 +79,8 @@ void Do_CriticalSection_Destroy(CriticalSection_t *CriticalSectionObject) */ boolean Do_CriticalSection_Enter(CriticalSection_t CriticalSectionObject) { - CRITICAL_SECTION* cs = (CRITICAL_SECTION*)CriticalSectionObject; + CRITICAL_SECTION *cs = (CRITICAL_SECTION *)CriticalSectionObject; + if (NULL != cs) { EnterCriticalSection(cs); } @@ -98,7 +102,8 @@ boolean Do_CriticalSection_Enter(CriticalSection_t CriticalSectionObject) */ void Do_CriticalSection_Leave(CriticalSection_t CriticalSectionObject) { - CRITICAL_SECTION* cs = (CRITICAL_SECTION*)CriticalSectionObject; + CRITICAL_SECTION *cs = (CRITICAL_SECTION *)CriticalSectionObject; + if (NULL != cs) { LeaveCriticalSection(cs); } diff --git a/lcmodule/source/cnh1605551_ldr_utilities/critical_section/t_critical_section.h b/lcmodule/source/cnh1605551_ldr_utilities/critical_section/t_critical_section.h index 448da41..448da41 100755..100644 --- a/lcmodule/source/cnh1605551_ldr_utilities/critical_section/t_critical_section.h +++ b/lcmodule/source/cnh1605551_ldr_utilities/critical_section/t_critical_section.h |