4 static errno_t __errno = E_SUCCESS;
5 static CRITICAL_SECTION errno_cs;
6 static bool errno_cs_initialized = false;
7 static is_last_errno = false;
9 void initializeErrno(void)
11 if(!errno_cs_initialized)
13 memset(&errno_cs,0,sizeof(CRITICAL_SECTION)) ;
14 InitializeCriticalSection(&errno_cs);
15 errno_cs_initialized = true;
19 void terminateErrno(void)
21 if(errno_cs_initialized)
23 DeleteCriticalSection(&errno_cs);
28 void setErrno(errno_t e)
30 EnterCriticalSection(&errno_cs);
32 if((E_SUCCESS != e) && !is_last_errno)
38 LeaveCriticalSection(&errno_cs);
41 errno_t getErrno(void)
44 EnterCriticalSection(&errno_cs);
46 LeaveCriticalSection(&errno_cs);