Author: Armin Rigo <ar...@tunes.org> Branch: release-1.6.x Changeset: r46498:45151c7fdcbc Date: 2011-08-14 17:09 +0000 http://bitbucket.org/pypy/pypy/changeset/45151c7fdcbc/
Log: Fixes for the previous checkin. diff --git a/pypy/module/bz2/interp_bz2.py b/pypy/module/bz2/interp_bz2.py --- a/pypy/module/bz2/interp_bz2.py +++ b/pypy/module/bz2/interp_bz2.py @@ -123,9 +123,9 @@ 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 @@ 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 --- a/pypy/module/pyexpat/interp_pyexpat.py +++ b/pypy/module/pyexpat/interp_pyexpat.py @@ -317,7 +317,7 @@ 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 --- a/pypy/module/thread/ll_thread.py +++ b/pypy/module/thread/ll_thread.py @@ -51,9 +51,9 @@ 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 @@ 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 --- a/pypy/module/thread/os_thread.py +++ b/pypy/module/thread/os_thread.py @@ -252,4 +252,6 @@ 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 --- a/pypy/rlib/_rsocket_rffi.py +++ b/pypy/rlib/_rsocket_rffi.py @@ -455,9 +455,9 @@ # 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 @@ 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 --- a/pypy/rlib/rdynload.py +++ b/pypy/rlib/rdynload.py @@ -63,7 +63,7 @@ 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 --- a/pypy/rlib/rmmap.py +++ b/pypy/rlib/rmmap.py @@ -118,7 +118,7 @@ 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 @@ 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 @@ 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 --- a/pypy/rlib/ropenssl.py +++ b/pypy/rlib/ropenssl.py @@ -197,7 +197,7 @@ 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('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_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_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 --- a/pypy/rlib/rwin32.py +++ b/pypy/rlib/rwin32.py @@ -79,8 +79,9 @@ 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 @@ 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 --- a/pypy/rlib/rzlib.py +++ b/pypy/rlib/rzlib.py @@ -131,7 +131,8 @@ 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 @@ 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 --- a/pypy/rpython/module/ll_os.py +++ b/pypy/rpython/module/ll_os.py @@ -877,7 +877,8 @@ @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))) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit