00001 
00002 
00003 
00004 
00005 #include "ace/config-all.h"    
00006 
00007 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00008 
00009 ACE_INLINE int
00010 ACE_OS::last_error (void)
00011 {
00012   
00013 
00014 #if defined (ACE_WIN32)
00015   
00016   
00017   
00018   
00019   
00020   int lerror = ::GetLastError ();
00021   int lerrno = errno;
00022   return lerrno == 0 ? lerror : lerrno;
00023 #else
00024   return errno;
00025 #endif 
00026 }
00027 
00028 ACE_INLINE void
00029 ACE_OS::last_error (int error)
00030 {
00031   ACE_OS_TRACE ("ACE_OS::last_error");
00032 #if defined (ACE_WIN32)
00033   ::SetLastError (error);
00034 #endif 
00035   errno = error;
00036 }
00037 
00038 ACE_INLINE int
00039 ACE_OS::set_errno_to_last_error (void)
00040 {
00041 # if defined (ACE_WIN32)
00042   return errno = ::GetLastError ();
00043 #else
00044   return errno;
00045 # endif 
00046 }
00047 
00048 ACE_INLINE int
00049 ACE_OS::set_errno_to_wsa_last_error (void)
00050 {
00051 # if defined (ACE_WIN32)
00052   return errno = ::WSAGetLastError ();
00053 #else
00054   return errno;
00055 # endif 
00056 }
00057 
00058 #if defined (ACE_HAS_WINCE_BROKEN_ERRNO)
00059 
00060 ACE_INLINE ACE_CE_Errno *
00061 ACE_CE_Errno::instance ()
00062 {
00063   
00064   return ACE_CE_Errno::instance_;
00065 }
00066 
00067 ACE_INLINE
00068 ACE_CE_Errno::operator int (void) const
00069 {
00070   return (int) TlsGetValue (ACE_CE_Errno::errno_key_);
00071 }
00072 
00073 ACE_INLINE int
00074 ACE_CE_Errno::operator= (int x)
00075 {
00076   
00077   TlsSetValue (ACE_CE_Errno::errno_key_, (void *) x);
00078   return x;
00079 }
00080 
00081 #endif 
00082 
00083 ACE_END_VERSIONED_NAMESPACE_DECL