[pypy-svn] r79861 - pypy/branch/fast-forward/pypy/module/signal
afa at codespeak.net
afa at codespeak.net
Tue Dec 7 00:34:53 CET 2010
Author: afa
Date: Tue Dec 7 00:34:52 2010
New Revision: 79861
Modified:
pypy/branch/fast-forward/pypy/module/signal/__init__.py
pypy/branch/fast-forward/pypy/module/signal/interp_signal.py
Log:
Implement signal.siginterrupt()
Modified: pypy/branch/fast-forward/pypy/module/signal/__init__.py
==============================================================================
--- pypy/branch/fast-forward/pypy/module/signal/__init__.py (original)
+++ pypy/branch/fast-forward/pypy/module/signal/__init__.py Tue Dec 7 00:34:52 2010
@@ -15,6 +15,7 @@
if os.name == 'posix':
interpleveldefs['alarm'] = 'interp_signal.alarm'
interpleveldefs['pause'] = 'interp_signal.pause'
+ interpleveldefs['siginterrupt'] = 'interp_signal.siginterrupt'
appleveldefs = {
'default_int_handler': 'app_signal.default_int_handler',
Modified: pypy/branch/fast-forward/pypy/module/signal/interp_signal.py
==============================================================================
--- pypy/branch/fast-forward/pypy/module/signal/interp_signal.py (original)
+++ pypy/branch/fast-forward/pypy/module/signal/interp_signal.py Tue Dec 7 00:34:52 2010
@@ -7,7 +7,7 @@
from pypy.translator.tool.cbuild import ExternalCompilationInfo
import py
from pypy.tool import autopath
-from pypy.rlib import jit
+from pypy.rlib import jit, rposix
from pypy.rlib.rarithmetic import intmask
def setup():
@@ -53,6 +53,7 @@
pure_function=True)
c_alarm = external('alarm', [rffi.INT], rffi.INT)
c_pause = external('pause', [], rffi.INT)
+c_siginterrupt = external('siginterrupt', [rffi.INT, rffi.INT], rffi.INT)
class SignalActionFlag(AbstractActionFlag):
@@ -244,3 +245,10 @@
old_fd = pypysig_set_wakeup_fd(fd)
return space.wrap(intmask(old_fd))
set_wakeup_fd.unwrap_spec = [ObjSpace, int]
+
+def siginterrupt(space, signum, flag):
+ check_signum(space, signum)
+ if rffi.cast(lltype.Signed, c_siginterrupt(signum, flag)) < 0:
+ errno = rposix.get_errno()
+ raise OperationError(space.w_RuntimeError, space.wrap(errno))
+siginterrupt.unwrap_spec = [ObjSpace, int, int]
More information about the Pypy-commit
mailing list