diff options
| author | serpilliere <devnull@localhost> | 2014-08-25 12:55:55 +0200 |
|---|---|---|
| committer | serpilliere <devnull@localhost> | 2014-08-25 12:55:55 +0200 |
| commit | 73f01fbe1614ff326ade1f30a060cf4b6ed46543 (patch) | |
| tree | 2b27342660852a708125a165efd559c7e2fcd0de /miasm2/jitter/vm_mngr_py.c | |
| parent | 8780dfbe39e48ef0b513a8fb3c7c9f7c985cfb72 (diff) | |
| parent | 4e5cb690569e8b295645815754fda5a9913167f9 (diff) | |
| download | miasm-73f01fbe1614ff326ade1f30a060cf4b6ed46543.tar.gz miasm-73f01fbe1614ff326ade1f30a060cf4b6ed46543.zip | |
merge
Diffstat (limited to 'miasm2/jitter/vm_mngr_py.c')
| -rw-r--r-- | miasm2/jitter/vm_mngr_py.c | 19 |
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"}, |