about summary refs log tree commit diff stats
path: root/miasm2/jitter/vm_mngr_py.c
diff options
context:
space:
mode:
authorserpilliere <devnull@localhost>2014-08-25 12:55:55 +0200
committerserpilliere <devnull@localhost>2014-08-25 12:55:55 +0200
commit73f01fbe1614ff326ade1f30a060cf4b6ed46543 (patch)
tree2b27342660852a708125a165efd559c7e2fcd0de /miasm2/jitter/vm_mngr_py.c
parent8780dfbe39e48ef0b513a8fb3c7c9f7c985cfb72 (diff)
parent4e5cb690569e8b295645815754fda5a9913167f9 (diff)
downloadmiasm-73f01fbe1614ff326ade1f30a060cf4b6ed46543.tar.gz
miasm-73f01fbe1614ff326ade1f30a060cf4b6ed46543.zip
merge
Diffstat (limited to 'miasm2/jitter/vm_mngr_py.c')
-rw-r--r--miasm2/jitter/vm_mngr_py.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/miasm2/jitter/vm_mngr_py.c b/miasm2/jitter/vm_mngr_py.c
index a5a24fd6..18f2fd51 100644
--- a/miasm2/jitter/vm_mngr_py.c
+++ b/miasm2/jitter/vm_mngr_py.c
@@ -19,6 +19,7 @@
 #include "structmember.h"
 #include <stdint.h>
 #include <inttypes.h>
+#include <signal.h>
 #include "queue.h"
 #include "vm_mngr.h"
 
@@ -38,6 +39,8 @@ typedef struct {
 	vm_mngr_t vm_mngr;
 } VmMngr;
 
+/* XXX POC signals */
+VmMngr* global_vmmngr;
 
 PyObject* _vm_get_exception(unsigned int xcpt)
 {
@@ -106,6 +109,20 @@ PyObject* vm_get_mem_base_addr(VmMngr* self, PyObject* item)
 	return PyLong_FromUnsignedLongLong((uint64_t)addr_base);
 }
 
+static void sig_alarm(int signo)
+{
+	global_vmmngr->vm_mngr.exception_flags |= BREAK_SIGALARM;
+	return;
+}
+
+PyObject* set_alarm(VmMngr* self)
+{
+	global_vmmngr = self;
+	signal(SIGALRM, sig_alarm);
+	return PyLong_FromUnsignedLongLong((uint64_t)0);
+}
+
+
 
 PyObject* vm_add_memory_page(VmMngr* self, PyObject* args)
 {
@@ -781,6 +798,8 @@ static PyMethodDef VmMngr_methods[] = {
 	 "X"},
 	{"vm_reset_code_bloc_pool", (PyCFunction)vm_reset_code_bloc_pool, METH_VARARGS,
 	 "X"},
+	{"set_alarm", (PyCFunction)set_alarm, METH_VARARGS,
+	 "X"},
 	{"vm_call_pyfunc_from_globals",(PyCFunction)vm_call_pyfunc_from_globals, METH_VARARGS,
 	 "X"},