diff options
author | 2011-08-14 17:09:06 +0000 | |
---|---|---|
committer | 2011-08-14 17:09:06 +0000 | |
commit | d0bf0df868590017553aa044b85a9e0734312fb6 (patch) | |
tree | 84fdc5f395f72086b529b5f47b9e57032090ec64 | |
parent | The GIL-releasing functions must not be reached by an (diff) | |
download | pypy-d0bf0df868590017553aa044b85a9e0734312fb6.tar.gz pypy-d0bf0df868590017553aa044b85a9e0734312fb6.tar.bz2 pypy-d0bf0df868590017553aa044b85a9e0734312fb6.zip |
Fixes for the previous checkin.
-rw-r--r-- | pypy/module/bz2/interp_bz2.py | 10 | ||||
-rw-r--r-- | pypy/module/pyexpat/interp_pyexpat.py | 2 | ||||
-rw-r--r-- | pypy/module/thread/ll_thread.py | 12 | ||||
-rw-r--r-- | pypy/module/thread/os_thread.py | 2 | ||||
-rw-r--r-- | pypy/rlib/_rsocket_rffi.py | 8 | ||||
-rw-r--r-- | pypy/rlib/rdynload.py | 2 | ||||
-rw-r--r-- | pypy/rlib/rmmap.py | 7 | ||||
-rw-r--r-- | pypy/rlib/ropenssl.py | 12 | ||||
-rw-r--r-- | pypy/rlib/rwin32.py | 9 | ||||
-rw-r--r-- | pypy/rlib/rzlib.py | 6 | ||||
-rw-r--r-- | pypy/rpython/module/ll_os.py | 3 |
11 files changed, 41 insertions, 32 deletions
diff --git a/pypy/module/bz2/interp_bz2.py b/pypy/module/bz2/interp_bz2.py index ecb3a78b62..50ad8f1650 100644 --- a/pypy/module/bz2/interp_bz2.py +++ b/pypy/module/bz2/interp_bz2.py @@ -123,9 +123,9 @@ else: def _bzs_total_out(bzs): return bzs.total_out -def external(name, args, result): +def external(name, args, result, **kwds): return rffi.llexternal(name, args, result, compilation_info= - CConfig._compilation_info_) + CConfig._compilation_info_, **kwds) # the least but one parameter should be rffi.VOIDP but it's not used # so I trick the compiler to not complain about constanst pointer passed @@ -143,11 +143,13 @@ BZ2_bzWrite = external('BZ2_bzWrite', [rffi.INTP, BZFILE, rffi.CCHARP, rffi.INT], lltype.Void) BZ2_bzCompressInit = external('BZ2_bzCompressInit', [bz_stream, rffi.INT, rffi.INT, rffi.INT], rffi.INT) -BZ2_bzCompressEnd = external('BZ2_bzCompressEnd', [bz_stream], rffi.INT) +BZ2_bzCompressEnd = external('BZ2_bzCompressEnd', [bz_stream], rffi.INT, + threadsafe=False) BZ2_bzCompress = external('BZ2_bzCompress', [bz_stream, rffi.INT], rffi.INT) BZ2_bzDecompressInit = external('BZ2_bzDecompressInit', [bz_stream, rffi.INT, rffi.INT], rffi.INT) -BZ2_bzDecompressEnd = external('BZ2_bzDecompressEnd', [bz_stream], rffi.INT) +BZ2_bzDecompressEnd = external('BZ2_bzDecompressEnd', [bz_stream], rffi.INT, + threadsafe=False) BZ2_bzDecompress = external('BZ2_bzDecompress', [bz_stream], rffi.INT) def _catch_bz2_error(space, bzerror): diff --git a/pypy/module/pyexpat/interp_pyexpat.py b/pypy/module/pyexpat/interp_pyexpat.py index 51cc8bdb0c..c854c84abd 100644 --- a/pypy/module/pyexpat/interp_pyexpat.py +++ b/pypy/module/pyexpat/interp_pyexpat.py @@ -317,7 +317,7 @@ XML_ParserCreate = expat_external( XML_ParserCreateNS = expat_external( 'XML_ParserCreateNS', [rffi.CCHARP, rffi.CHAR], XML_Parser) XML_ParserFree = expat_external( - 'XML_ParserFree', [XML_Parser], lltype.Void) + 'XML_ParserFree', [XML_Parser], lltype.Void, threadsafe=False) XML_SetUserData = expat_external( 'XML_SetUserData', [XML_Parser, rffi.VOIDP], lltype.Void) def XML_GetUserData(parser): diff --git a/pypy/module/thread/ll_thread.py b/pypy/module/thread/ll_thread.py index 92677bc976..e84d427a75 100644 --- a/pypy/module/thread/ll_thread.py +++ b/pypy/module/thread/ll_thread.py @@ -51,9 +51,9 @@ TLOCKP = rffi.COpaquePtr('struct RPyOpaque_ThreadLock', c_thread_lock_init = llexternal('RPyThreadLockInit', [TLOCKP], rffi.INT, threadsafe=False) # may add in a global list -c_thread_lock_dealloc = llexternal('RPyOpaqueDealloc_ThreadLock', [TLOCKP], - lltype.Void, - threadsafe=True) +c_thread_lock_dealloc_NOAUTO = llexternal('RPyOpaqueDealloc_ThreadLock', + [TLOCKP], lltype.Void, + _nowrapper=True) c_thread_acquirelock = llexternal('RPyThreadAcquireLock', [TLOCKP, rffi.INT], rffi.INT, threadsafe=True) # release the GIL @@ -158,9 +158,9 @@ def allocate_ll_lock(): return ll_lock def free_ll_lock(ll_lock): - c_thread_acquirelock(ll_lock, 0) - c_thread_releaselock(ll_lock) - c_thread_lock_dealloc(ll_lock) + c_thread_acquirelock_NOAUTO(ll_lock, 0) + c_thread_releaselock_NOAUTO(ll_lock) + c_thread_lock_dealloc_NOAUTO(ll_lock) lltype.free(ll_lock, flavor='raw', track_allocation=False) def acquire_NOAUTO(ll_lock, flag): diff --git a/pypy/module/thread/os_thread.py b/pypy/module/thread/os_thread.py index 7bf70e5f67..a76460048f 100644 --- a/pypy/module/thread/os_thread.py +++ b/pypy/module/thread/os_thread.py @@ -252,4 +252,6 @@ thread to exit silently unless the exception is caught.""" def interrupt_main(space): """Raise a KeyboardInterrupt in the main thread. A subthread can use this function to interrupt the main thread.""" + if space.check_signal_action is None: # no signal module! + raise OperationError(space.w_KeyboardInterrupt, space.w_None) space.check_signal_action.set_interrupt() diff --git a/pypy/rlib/_rsocket_rffi.py b/pypy/rlib/_rsocket_rffi.py index 6a253c3b5e..df0e6143f2 100644 --- a/pypy/rlib/_rsocket_rffi.py +++ b/pypy/rlib/_rsocket_rffi.py @@ -455,9 +455,9 @@ timeval = cConfig.timeval # eci = ExternalCompilationInfo(includes=includes, libraries=libraries, # separate_module_sources=sources) -def external(name, args, result): +def external(name, args, result, **kwds): return rffi.llexternal(name, args, result, compilation_info=eci, - calling_conv=calling_conv) + calling_conv=calling_conv, **kwds) def external_c(name, args, result, **kwargs): return rffi.llexternal(name, args, result, compilation_info=eci, @@ -476,9 +476,9 @@ if _POSIX: socket = external('socket', [rffi.INT, rffi.INT, rffi.INT], socketfd_type) if WIN32: - socketclose = external('closesocket', [socketfd_type], rffi.INT) + socketclose = external('closesocket', [socketfd_type], rffi.INT, threadsafe=False) else: - socketclose = external('close', [socketfd_type], rffi.INT) + socketclose = external('close', [socketfd_type], rffi.INT, threadsafe=False) socketconnect = external('connect', [socketfd_type, sockaddr_ptr, socklen_t], rffi.INT) diff --git a/pypy/rlib/rdynload.py b/pypy/rlib/rdynload.py index 01a74a18bd..222bd988f4 100644 --- a/pypy/rlib/rdynload.py +++ b/pypy/rlib/rdynload.py @@ -63,7 +63,7 @@ class DLOpenError(Exception): if not _WIN32: c_dlopen = external('dlopen', [rffi.CCHARP, rffi.INT], rffi.VOIDP) - c_dlclose = external('dlclose', [rffi.VOIDP], rffi.INT) + c_dlclose = external('dlclose', [rffi.VOIDP], rffi.INT, threadsafe=False) c_dlerror = external('dlerror', [], rffi.CCHARP) c_dlsym = external('dlsym', [rffi.VOIDP, rffi.CCHARP], rffi.VOIDP) diff --git a/pypy/rlib/rmmap.py b/pypy/rlib/rmmap.py index df2be6e9c6..e96485b062 100644 --- a/pypy/rlib/rmmap.py +++ b/pypy/rlib/rmmap.py @@ -118,7 +118,7 @@ if _POSIX: has_mremap = cConfig['has_mremap'] c_mmap, c_mmap_safe = external('mmap', [PTR, size_t, rffi.INT, rffi.INT, rffi.INT, off_t], PTR) - c_munmap, c_munmap_safe = external('munmap', [PTR, size_t], rffi.INT) + _, c_munmap_safe = external('munmap', [PTR, size_t], rffi.INT) c_msync, _ = external('msync', [PTR, size_t, rffi.INT], rffi.INT) if has_mremap: c_mremap, _ = external('mremap', @@ -174,7 +174,8 @@ elif _MS_WINDOWS: DuplicateHandle = winexternal('DuplicateHandle', [HANDLE, HANDLE, HANDLE, LPHANDLE, DWORD, BOOL, DWORD], BOOL) CreateFileMapping = winexternal('CreateFileMappingA', [HANDLE, rwin32.LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCSTR], HANDLE) MapViewOfFile = winexternal('MapViewOfFile', [HANDLE, DWORD, DWORD, DWORD, SIZE_T], LPCSTR)##!!LPVOID) - UnmapViewOfFile = winexternal('UnmapViewOfFile', [LPCVOID], BOOL) + UnmapViewOfFile = winexternal('UnmapViewOfFile', [LPCVOID], BOOL, + threadsafe=False) FlushViewOfFile = winexternal('FlushViewOfFile', [LPCVOID, SIZE_T], BOOL) SetFilePointer = winexternal('SetFilePointer', [HANDLE, LONG, PLONG, DWORD], DWORD) SetEndOfFile = winexternal('SetEndOfFile', [HANDLE], BOOL) @@ -294,7 +295,7 @@ class MMap(object): os.close(self.fd) self.fd = -1 if self.size > 0: - c_munmap(self.getptr(0), self.size) + c_munmap_safe(self.getptr(0), self.size) self.setdata(NODATA, 0) def __del__(self): diff --git a/pypy/rlib/ropenssl.py b/pypy/rlib/ropenssl.py index aea55e3214..573c3dbf48 100644 --- a/pypy/rlib/ropenssl.py +++ b/pypy/rlib/ropenssl.py @@ -197,7 +197,7 @@ ssl_external('X509_NAME_get_entry', [X509_NAME, rffi.INT], X509_NAME_ENTRY) ssl_external('X509_NAME_ENTRY_get_object', [X509_NAME_ENTRY], ASN1_OBJECT) ssl_external('X509_NAME_ENTRY_get_data', [X509_NAME_ENTRY], ASN1_STRING) ssl_external('i2d_X509', [X509, rffi.CCHARPP], rffi.INT) -ssl_external('X509_free', [X509], lltype.Void) +ssl_external('X509_free', [X509], lltype.Void, threadsafe=False) ssl_external('X509_get_notBefore', [X509], ASN1_TIME, macro=True) ssl_external('X509_get_notAfter', [X509], ASN1_TIME, macro=True) ssl_external('X509_get_serialNumber', [X509], ASN1_INTEGER) @@ -232,9 +232,9 @@ ssl_external('SSL_CIPHER_get_bits', [SSL_CIPHER, rffi.INTP], rffi.INT) ssl_external('ERR_get_error', [], rffi.INT) ssl_external('ERR_error_string', [rffi.ULONG, rffi.CCHARP], rffi.CCHARP) -ssl_external('SSL_free', [SSL], lltype.Void) -ssl_external('SSL_CTX_free', [SSL_CTX], lltype.Void) -ssl_external('CRYPTO_free', [rffi.VOIDP], lltype.Void) +ssl_external('SSL_free', [SSL], lltype.Void, threadsafe=False) +ssl_external('SSL_CTX_free', [SSL_CTX], lltype.Void, threadsafe=False) +ssl_external('CRYPTO_free', [rffi.VOIDP], lltype.Void, threadsafe=False) libssl_OPENSSL_free = libssl_CRYPTO_free ssl_external('SSL_write', [SSL, rffi.CCHARP, rffi.INT], rffi.INT) @@ -246,7 +246,7 @@ ssl_external('BIO_s_mem', [], BIO_METHOD) ssl_external('BIO_s_file', [], BIO_METHOD) ssl_external('BIO_new', [BIO_METHOD], BIO) ssl_external('BIO_set_nbio', [BIO, rffi.INT], rffi.INT, macro=True) -ssl_external('BIO_free', [BIO], rffi.INT) +ssl_external('BIO_free', [BIO], rffi.INT, threadsafe=False) ssl_external('BIO_reset', [BIO], rffi.INT, macro=True) ssl_external('BIO_read_filename', [BIO, rffi.CCHARP], rffi.INT, macro=True) ssl_external('BIO_gets', [BIO, rffi.CCHARP, rffi.INT], rffi.INT) @@ -273,7 +273,7 @@ EVP_DigestFinal = external( EVP_MD_CTX_copy = external( 'EVP_MD_CTX_copy', [EVP_MD_CTX, EVP_MD_CTX], rffi.INT) EVP_MD_CTX_cleanup = external( - 'EVP_MD_CTX_cleanup', [EVP_MD_CTX], rffi.INT) + 'EVP_MD_CTX_cleanup', [EVP_MD_CTX], rffi.INT, threadsafe=False) def init_ssl(): libssl_SSL_load_error_strings() diff --git a/pypy/rlib/rwin32.py b/pypy/rlib/rwin32.py index ed82e2bdd7..2cdc6f882d 100644 --- a/pypy/rlib/rwin32.py +++ b/pypy/rlib/rwin32.py @@ -79,8 +79,9 @@ class CConfig: for k, v in rffi_platform.configure(CConfig).items(): globals()[k] = v -def winexternal(name, args, result): - return rffi.llexternal(name, args, result, compilation_info=eci, calling_conv='win') +def winexternal(name, args, result, **kwds): + return rffi.llexternal(name, args, result, compilation_info=eci, + calling_conv='win', **kwds) if WIN32: HANDLE = rffi.COpaquePtr(typedef='HANDLE') @@ -103,10 +104,10 @@ if WIN32: GetProcAddress = winexternal('GetProcAddress', [HMODULE, rffi.CCHARP], rffi.VOIDP) - FreeLibrary = winexternal('FreeLibrary', [HMODULE], BOOL) + FreeLibrary = winexternal('FreeLibrary', [HMODULE], BOOL, threadsafe=False) LocalFree = winexternal('LocalFree', [HLOCAL], DWORD) - CloseHandle = winexternal('CloseHandle', [HANDLE], BOOL) + CloseHandle = winexternal('CloseHandle', [HANDLE], BOOL, threadsafe=False) FormatMessage = winexternal( 'FormatMessageA', diff --git a/pypy/rlib/rzlib.py b/pypy/rlib/rzlib.py index 51548478d2..1f1283d169 100644 --- a/pypy/rlib/rzlib.py +++ b/pypy/rlib/rzlib.py @@ -131,7 +131,8 @@ _deflateInit2_ = zlib_external( rffi.INT) _deflate = zlib_external('deflate', [z_stream_p, rffi.INT], rffi.INT) -_deflateEnd = zlib_external('deflateEnd', [z_stream_p], rffi.INT) +_deflateEnd = zlib_external('deflateEnd', [z_stream_p], rffi.INT, + threadsafe=False) def _deflateInit2(stream, level, method, wbits, memlevel, strategy): size = rffi.sizeof(z_stream) @@ -149,7 +150,8 @@ _inflateInit2_ = zlib_external( rffi.INT) _inflate = zlib_external('inflate', [z_stream_p, rffi.INT], rffi.INT) -_inflateEnd = zlib_external('inflateEnd', [z_stream_p], rffi.INT) +_inflateEnd = zlib_external('inflateEnd', [z_stream_p], rffi.INT, + threadsafe=False) def _inflateInit2(stream, wbits): size = rffi.sizeof(z_stream) diff --git a/pypy/rpython/module/ll_os.py b/pypy/rpython/module/ll_os.py index 4b4b6bbdc6..d990dce6b3 100644 --- a/pypy/rpython/module/ll_os.py +++ b/pypy/rpython/module/ll_os.py @@ -877,7 +877,8 @@ class RegisterOs(BaseLazyRegistering): @registering(os.close) def register_os_close(self): - os_close = self.llexternal(underscore_on_windows+'close', [rffi.INT], rffi.INT) + os_close = self.llexternal(underscore_on_windows+'close', [rffi.INT], + rffi.INT, threadsafe=False) def close_llimpl(fd): error = rffi.cast(lltype.Signed, os_close(rffi.cast(rffi.INT, fd))) |