1. 06 Jun, 2008 7 commits
    • Thomas Heller's avatar
      Document the new ctypes features. · 3f67c43f
      Thomas Heller authored
      It would be great if someone could review both sematics, markup, and
      spelling, and correct the versionadded and versionchanges markers.
      3f67c43f
    • Thomas Heller's avatar
      fb0117e9
    • Thomas Heller's avatar
      Performance improvement: Use PyDict_Get/SetItem instead of · f89b04c1
      Thomas Heller authored
      PyDict_Get/SetItemString.
      f89b04c1
    • Georg Brandl's avatar
      Fix brackets. · d82a9c16
      Georg Brandl authored
      d82a9c16
    • Thomas Heller's avatar
      Issue #1798: Add ctypes calling convention that allows safe access of errno. · fbb9c0bf
      Thomas Heller authored
      ctypes maintains thread-local storage that has space for two error
      numbers: private copies of the system 'errno' value and, on Windows,
      the system error code accessed by the GetLastError() and
      SetLastError() api functions.
      
      Foreign functions created with CDLL(..., use_errno=True), when called,
      swap the system 'errno' value with the private copy 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.
      
      On Windows, foreign functions created with CDLL(...,
      use_last_error=True) or WinDLL(..., use_last_error=True) swap the
      system LastError value with the ctypes private copy.
      
      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).
      
      New ctypes functions are provided to access the ctypes private copies
      from Python:
      
      - ctypes.set_errno(value) and ctypes.set_last_error(value) store
        'value' in the private copy and returns the previous value.
      
      - ctypes.get_errno() and ctypes.get_last_error() returns the current
        ctypes private copies value.
      fbb9c0bf
    • Georg Brandl's avatar
      Markup fix. · d77554fe
      Georg Brandl authored
      d77554fe
    • Neal Norwitz's avatar
      Aldo Cortesi confirmed this is still needed for OpenBSD 4.2 and 4.3. · 2a3e3d04
      Neal Norwitz authored
      (I didn't regen configure, since I don't have a working autoconf.)
      2a3e3d04
  2. 05 Jun, 2008 9 commits
  3. 04 Jun, 2008 6 commits
    • Alexandre Vassalotti's avatar
    • Thomas Heller's avatar
      Revert revisions 63943 and 63942 (Issue #1798: Add ctypes calling · d5bb9215
      Thomas Heller authored
      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.
      d5bb9215
    • Thomas Heller's avatar
      Fix ctypes.set_errno for gcc. · 8f22b88e
      Thomas Heller authored
      8f22b88e
    • Thomas Heller's avatar
      Issue #1798: Add ctypes calling convention that allows safe access to · e70c3378
      Thomas Heller authored
      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.
      e70c3378
    • Georg Brandl's avatar
      a2b34b87
    • Martin v. Löwis's avatar
      8718459f
  4. 03 Jun, 2008 2 commits
  5. 02 Jun, 2008 5 commits
  6. 01 Jun, 2008 11 commits