mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
python: Add XC binding for Xen build ID
Extend the list of xc() object methods with additional one to display Xen's buildid. The implementation follows the libxl implementation (e.g. max buildid size assumption being XC_PAGE_SIZE minus sizeof(buildid->len)). Signed-off-by: Pawel Wieczorkiewicz <wipawel@amazon.de> Reviewed-by: Martin Mazein <amazein@amazon.de> Reviewed-by: Andra-Irina Paraschiv <andraprs@amazon.com> Reviewed-by: Norbert Manthey <nmanthey@amazon.de> Acked-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
This commit is contained in:
1 parent
248faa637d
commit
bbf230b2a1
1 file changed
+27
@@ -1214,6 +1214,26 @@ out:
|
||||
return ret_obj ? ret_obj : pyxc_error_to_exception(self->xc_handle);
|
||||
}
|
||||
|
||||
static PyObject *pyxc_xenbuildid(XcObject *self)
|
||||
{
|
||||
xen_build_id_t *buildid;
|
||||
int i, r;
|
||||
char *str;
|
||||
|
||||
buildid = alloca(XC_PAGE_SIZE);
|
||||
buildid->len = XC_PAGE_SIZE - sizeof(*buildid);
|
||||
|
||||
r = xc_version(self->xc_handle, XENVER_build_id, buildid);
|
||||
if ( r <= 0 )
|
||||
return pyxc_error_to_exception(self->xc_handle);
|
||||
|
||||
str = alloca((r * 2) + 1);
|
||||
for ( i = 0; i < r; i++ )
|
||||
snprintf(&str[i * 2], 3, "%02hhx", buildid->buf[i]);
|
||||
|
||||
return Py_BuildValue("s", str);
|
||||
}
|
||||
|
||||
static PyObject *pyxc_xeninfo(XcObject *self)
|
||||
{
|
||||
xen_extraversion_t xen_extra;
|
||||
@@ -2297,6 +2317,13 @@ static PyMethodDef pyxc_methods[] = {
|
||||
"Returns [dict]: information about Xen"
|
||||
" [None]: on failure.\n" },
|
||||
|
||||
{ "buildid",
|
||||
(PyCFunction)pyxc_xenbuildid,
|
||||
METH_NOARGS, "\n"
|
||||
"Get Xen buildid\n"
|
||||
"Returns [str]: Xen buildid"
|
||||
" [None]: on failure.\n" },
|
||||
|
||||
{ "shadow_control",
|
||||
(PyCFunction)pyxc_shadow_control,
|
||||
METH_VARARGS | METH_KEYWORDS, "\n"
|
||||
|
||||