On Thu, Aug 15, 2019 at 09:44:00AM +0000, Pawel Wieczorkiewicz wrote: > 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). > > Signed-off-by: Pawel Wieczorkiewicz <[email protected]> > Reviewed-by: Martin Mazein <[email protected]> > Reviewed-by: Andra-Irina Paraschiv <[email protected]> > Reviewed-by: Norbert Manthey <[email protected]> > --- > v2: > * No code change > * Adding maintainers > --- > tools/python/xen/lowlevel/xc/xc.c | 27 +++++++++++++++++++++++++++ > 1 file changed, 27 insertions(+) > > diff --git a/tools/python/xen/lowlevel/xc/xc.c > b/tools/python/xen/lowlevel/xc/xc.c > index 522cbe3b9c..5459d6834d 100644 > --- a/tools/python/xen/lowlevel/xc/xc.c > +++ b/tools/python/xen/lowlevel/xc/xc.c > @@ -1211,6 +1211,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(sizeof(buildid->len) + XC_PAGE_SIZE); > + buildid->len = XC_PAGE_SIZE - sizeof(*buildid);
Those doesn't match. You allocated XC_PAGE_SIZE in addition to
sizeof(buildid->len). I'd change to alloca(XC_PAGE_SIZE) - it is
unlikely that izeof(buildid->len) would be larger than XC_PAGE_SIZE and
we do assume it in other places anyway.
> +
> + 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;
> @@ -2294,6 +2314,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"
--
Best Regards,
Marek Marczykowski-Górecki
Invisible Things Lab
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
signature.asc
Description: PGP signature
_______________________________________________ Xen-devel mailing list [email protected] https://lists.xenproject.org/mailman/listinfo/xen-devel
