3 // $Id: OS_NS_errno.inl 80826 2008-03-04 14:51:23Z wotte $
5 #include "ace/config-all.h" /* Need ACE_TRACE */
7 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
10 ACE_OS::last_error (void)
12 // ACE_OS_TRACE ("ACE_OS::last_error");
14 #if defined (ACE_WIN32)
15 // ACE_OS::last_error() prefers errnor since started out as a way to
16 // avoid directly accessing errno in ACE code - particularly the ACE
17 // C++ socket wrapper facades. On Windows, some things that would
18 // use errno on UNIX require ::GetLastError(), so this method tries
19 // to shield the rest of ACE from having to know about this.
20 int lerror = ::GetLastError ();
22 return lerrno == 0 ? lerror : lerrno;
25 #endif /* ACE_WIN32 */
29 ACE_OS::last_error (int error)
31 ACE_OS_TRACE ("ACE_OS::last_error");
32 #if defined (ACE_WIN32)
33 ::SetLastError (error);
34 #endif /* ACE_WIN32 */
39 ACE_OS::set_errno_to_last_error (void)
41 # if defined (ACE_WIN32)
42 return errno = ::GetLastError ();
45 # endif /* defined(ACE_WIN32) */
49 ACE_OS::set_errno_to_wsa_last_error (void)
51 # if defined (ACE_WIN32)
52 return errno = ::WSAGetLastError ();
55 # endif /* defined(ACE_WIN32) */
58 #if defined (ACE_HAS_WINCE_BROKEN_ERRNO)
60 ACE_INLINE ACE_CE_Errno *
61 ACE_CE_Errno::instance ()
63 // This should be inlined.
64 return ACE_CE_Errno::instance_;
68 ACE_CE_Errno::operator int (void) const
70 return (int) TlsGetValue (ACE_CE_Errno::errno_key_);
74 ACE_CE_Errno::operator= (int x)
77 TlsSetValue (ACE_CE_Errno::errno_key_, (void *) x);
81 #endif /* ACE_HAS_WINCE_BROKEN_ERRNO */
83 ACE_END_VERSIONED_NAMESPACE_DECL