From c43b608d2e6d3a1a3dd642970c4964179f7c5239 Mon Sep 17 00:00:00 2001 From: cherierm Date: Tue, 19 Dec 2006 16:27:45 +0000 Subject: [PATCH] errno concept implementation git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@3011 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- win32_test_app/src/TErrno.c | 49 +++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 win32_test_app/src/TErrno.c diff --git a/win32_test_app/src/TErrno.c b/win32_test_app/src/TErrno.c new file mode 100644 index 0000000000..6fc7c01bfb --- /dev/null +++ b/win32_test_app/src/TErrno.c @@ -0,0 +1,49 @@ +#include + +/* Global variable */ +static errno_t __errno = E_SUCCESS; +static CRITICAL_SECTION errno_cs; +static bool errno_cs_initialized = false; +static is_last_errno = false; + +void initializeErrno(void) +{ + if(!errno_cs_initialized) + { + memset(&errno_cs,0,sizeof(CRITICAL_SECTION)) ; + InitializeCriticalSection(&errno_cs); + errno_cs_initialized = true; + } +} + +void terminateErrno(void) +{ + if(errno_cs_initialized) + { + DeleteCriticalSection(&errno_cs); + } +} + + +void setErrno(errno_t e) +{ + EnterCriticalSection(&errno_cs); + + if((E_SUCCESS != e) && !is_last_errno) + { + __errno = e; + is_last_errno = true; + } + + LeaveCriticalSection(&errno_cs); +} + +errno_t getErrno(void) +{ + errno_t e; + EnterCriticalSection(&errno_cs); + e = __errno; + LeaveCriticalSection(&errno_cs); + + return e; +} \ No newline at end of file -- 2.20.1