summaryrefslogtreecommitdiff
path: root/src/python
diff options
context:
space:
mode:
authorNathan Binkert <binkertn@umich.edu>2007-02-17 20:27:11 -0800
committerNathan Binkert <binkertn@umich.edu>2007-02-17 20:27:11 -0800
commit18e245ad0b6ee99f23e2ed67c150413295c69c1f (patch)
tree0dc24c2803704af1bf18b89a92121dc7a3d70a91 /src/python
parent3cb26868287164ee608ea35b142d9ab252dd9362 (diff)
downloadgem5-18e245ad0b6ee99f23e2ed67c150413295c69c1f.tar.xz
Pass an exception from a python event through the event queue
back into python so we don't just silently ignore those errors --HG-- extra : convert_revision : e2f5566a4681f1b8ea80af50071119118afa7d8a
Diffstat (limited to 'src/python')
-rw-r--r--src/python/swig/pyevent.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/python/swig/pyevent.cc b/src/python/swig/pyevent.cc
index 6fb7d3f17..7f23b8874 100644
--- a/src/python/swig/pyevent.cc
+++ b/src/python/swig/pyevent.cc
@@ -31,6 +31,7 @@
#include <Python.h>
#include "python/swig/pyevent.hh"
+#include "sim/async.hh"
PythonEvent::PythonEvent(PyObject *obj, Tick when, Priority priority)
: Event(&mainEventQueue, priority), object(obj)
@@ -52,9 +53,9 @@ PythonEvent::~PythonEvent()
void
PythonEvent::process()
{
- PyObject *result;
-
- result = PyObject_CallMethod(object, "process", "");
+ PyObject *args = PyTuple_New(0);
+ PyObject *result = PyObject_Call(object, args, NULL);
+ Py_DECREF(args);
if (result) {
// Nothing to do just decrement the reference count
@@ -62,5 +63,7 @@ PythonEvent::process()
} else {
// Somethign should be done to signal back to the main interpreter
// that there's been an exception.
+ async_event = true;
+ async_exception = true;
}
}