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
00043
00044
00045
00046 # if defined(__BORLANDC__) && (__BORLANDC__ == 0x540) || defined (__IBMCPP__) && (__IBMCPP__ >= 400)
00047 int last_error = ::GetLastError ();
00048 return errno = last_error;
00049 # else
00050 return errno = ::GetLastError ();
00051 # endif
00052 #else
00053 return errno;
00054 # endif
00055 }
00056
00057 ACE_INLINE int
00058 ACE_OS::set_errno_to_wsa_last_error (void)
00059 {
00060 # if defined (ACE_WIN32)
00061
00062
00063
00064
00065 # if defined(__BORLANDC__) && (__BORLANDC__ == 0x540) || defined (__IBMCPP__) && (__IBMCPP__ >= 400)
00066 int last_error = ::WSAGetLastError ();
00067 return errno = last_error;
00068 # else
00069 return errno = ::WSAGetLastError ();
00070 # endif
00071 #else
00072 return errno;
00073 # endif
00074 }
00075
00076 #if defined (ACE_HAS_WINCE_BROKEN_ERRNO)
00077
00078 ACE_INLINE ACE_CE_Errno *
00079 ACE_CE_Errno::instance ()
00080 {
00081
00082 return ACE_CE_Errno::instance_;
00083 }
00084
00085 ACE_INLINE
00086 ACE_CE_Errno::operator int (void) const
00087 {
00088 return (int) TlsGetValue (ACE_CE_Errno::errno_key_);
00089 }
00090
00091 ACE_INLINE int
00092 ACE_CE_Errno::operator= (int x)
00093 {
00094
00095 TlsSetValue (ACE_CE_Errno::errno_key_, (void *) x);
00096 return x;
00097 }
00098
00099 #endif
00100
00101 ACE_END_VERSIONED_NAMESPACE_DECL