Add python method InferiorThread.handle

gdb/ChangeLog:

	* python/py-infthread.c (thpy_thread_handle): New function.
	(thread_object_methods): Register thpy_thread_handle.
This commit is contained in:
Kevin Buettner 2019-02-27 14:59:02 -07:00
parent 3d6c62048d
commit cf63b0162b
2 changed files with 38 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2019-04-08 Kevin Buettner <kevinb@redhat.com>
* python/py-infthread.c (thpy_thread_handle): New function.
(thread_object_methods): Register thpy_thread_handle.
2019-04-08 Kevin Buettner <kevinb@redhat.com>
* gdbthread.h (thread_to_thread_handle): Declare.

View File

@ -256,6 +256,36 @@ thpy_is_valid (PyObject *self, PyObject *args)
Py_RETURN_TRUE;
}
/* Implementation of gdb.InferiorThread.handle (self) -> handle. */
static PyObject *
thpy_thread_handle (PyObject *self, PyObject *args)
{
thread_object *thread_obj = (thread_object *) self;
THPY_REQUIRE_VALID (thread_obj);
gdb::byte_vector hv;
try
{
hv = target_thread_info_to_thread_handle (thread_obj->thread);
}
catch (const gdb_exception &except)
{
GDB_PY_HANDLE_EXCEPTION (except);
}
if (hv.size () == 0)
{
PyErr_SetString (PyExc_RuntimeError, _("Thread handle not found."));
return NULL;
}
PyObject *object = PyBytes_FromStringAndSize ((const char *) hv.data (),
hv.size());
return object;
}
/* Return a reference to a new Python object representing a ptid_t.
The object is a tuple containing (pid, lwp, tid). */
PyObject *
@ -335,6 +365,9 @@ Return whether the thread is running." },
{ "is_exited", thpy_is_exited, METH_NOARGS,
"is_exited () -> Boolean\n\
Return whether the thread is exited." },
{ "handle", thpy_thread_handle, METH_NOARGS,
"handle () -> handle\n\
Return thread library specific handle for thread." },
{ NULL }
};