summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Heller <theller@ctypes.org>2008-06-06 09:13:04 (GMT)
committerThomas Heller <theller@ctypes.org>2008-06-06 09:13:04 (GMT)
commit311c16a2a9b7887a284599a83627ae55f4bb47e4 (patch)
tree013b990acff3a256ef3c40346e1d3cff51218362
parent9af0cba7d1c321b28d2257f4c499631e09258e49 (diff)
downloadcpython-311c16a2a9b7887a284599a83627ae55f4bb47e4.zip
cpython-311c16a2a9b7887a284599a83627ae55f4bb47e4.tar.gz
cpython-311c16a2a9b7887a284599a83627ae55f4bb47e4.tar.bz2
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. ........
0 files changed, 0 insertions, 0 deletions