[Python-3000-checkins] r63980 - python/branches/py3k

thomas.heller python-3000-checkins at python.org
Fri Jun 6 11:13:04 CEST 2008


Author: thomas.heller
Date: Fri Jun  6 11:13:04 2008
New Revision: 63980

Log:
Blocked revisions 63942-63943,63945 via svnmerge

........
  r63942 | thomas.heller | 2008-06-04 20:59:03 +0200 (Wed, 04 Jun 2008) | 42 lines
  
  Issue #1798: Add ctypes calling convention that allows safe access to
  errno (and LastError, on Windows).
  
  ctypes maintains a module-global, but thread-local, variable that
  contains an error number; called 'ctypes_errno' for this discussion.
  This variable is a private copy of the systems 'errno' value; the copy
  is swapped with the 'errno' variable on several occasions.
  
  Foreign functions created with CDLL(..., use_errno=True), when called,
  swap the values just before the actual function call, and swapped
  again immediately afterwards.  The 'use_errno' parameter defaults to
  False, in this case 'ctypes_errno' is not touched.
  
  The values are also swapped immeditately before and after ctypes
  callback functions are called, if the callbacks are constructed using
  the new optional use_errno parameter set to True: CFUNCTYPE(..., use_errno=TRUE)
  or WINFUNCTYPE(..., use_errno=True).
  
  Two new ctypes functions are provided to access the 'ctypes_errno'
  value from Python:
  
  - ctypes.set_errno(value) sets ctypes_errno to 'value', the previous
    ctypes_errno value is returned.
  
  - ctypes.get_errno() returns the current ctypes_errno value.
  
  ---
  
  On Windows, the same scheme is implemented for the error value which
  is managed by the GetLastError() and SetLastError() windows api calls.
  
  The ctypes functions are 'ctypes.set_last_error(value)' and
  'ctypes.get_last_error()', the CDLL and WinDLL optional parameter is
  named 'use_last_error', defaults to False.
  
  ---
  
  On Windows, TlsSetValue and TlsGetValue calls are used to provide
  thread local storage for the variables; ctypes compiled with __GNUC__
  uses __thread variables.
........
  r63943 | thomas.heller | 2008-06-04 21:19:00 +0200 (Wed, 04 Jun 2008) | 1 line
  
  Fix ctypes.set_errno for gcc.
........
  r63945 | thomas.heller | 2008-06-04 22:22:05 +0200 (Wed, 04 Jun 2008) | 7 lines
  
  Revert revisions 63943 and 63942 (Issue #1798: Add ctypes calling
  convention that allows safe access to errno)
  
  This code does not yet work on OS X (__thread storage specifier not
  available), so i needs a configure check plus a more portable
  solution.
........


Modified:
   python/branches/py3k/   (props changed)


More information about the Python-3000-checkins mailing list