From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= Subject: Re: [PATCH v2 3/3] python: Add binding for non-blocking xs_check_watch() Date: Thu, 21 Sep 2017 20:09:23 +0200 Message-ID: <20170921180923.GH1116@mail-itl> References: <1506012428-59769-1-git-send-email-euan.harris@citrix.com> <1506012428-59769-4-git-send-email-euan.harris@citrix.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============8344775254366192489==" Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dv5um-00081r-7M for xen-devel@lists.xenproject.org; Thu, 21 Sep 2017 18:09:32 +0000 In-Reply-To: <1506012428-59769-4-git-send-email-euan.harris@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Euan Harris Cc: xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org --===============8344775254366192489== Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="15rqq6UvmZq3FwB1" Content-Disposition: inline --15rqq6UvmZq3FwB1 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Sep 21, 2017 at 05:47:08PM +0100, Euan Harris wrote: > xs_check_watch() checks for watch notifications without blocking. > Together with the binding for xs_fileno(), this makes it possible > to write event-driven clients in Python. >=20 > Signed-off-by: Euan Harris > Reviewed-by: Wei Liu Acked-by: Marek Marczykowski-G=C3=B3recki > --- > tools/python/xen/lowlevel/xs/xs.c | 28 ++++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) >=20 > diff --git a/tools/python/xen/lowlevel/xs/xs.c b/tools/python/xen/lowleve= l/xs/xs.c > index 2af5e07..4710002 100644 > --- a/tools/python/xen/lowlevel/xs/xs.c > +++ b/tools/python/xen/lowlevel/xs/xs.c > @@ -474,6 +474,33 @@ static PyObject *xspy_fileno(XsHandle *self) > } > =20 > =20 > +#define xspy_check_watch_doc "\n" \ > + "Check for watch notifications without blocking.\n" \ > + "\n" \ > + "Returns: [tuple] (path, token).\n" \ > + " None if no watches have fired.\n" \ > + "Raises xen.lowlevel.xs.Error on error.\n" \ > + "\n" > + > +static PyObject *xspy_check_watch(XsHandle *self, PyObject *args) > +{ > + struct xs_handle *xh =3D xshandle(self); > + PyObject *val =3D NULL; > + char **xsval; > + > + if (!xh) > + return NULL; > + > + xsval =3D xs_check_watch(xh); > + if (!xsval) { > + return none(errno =3D=3D EAGAIN); > + } > + > + val =3D match_watch_by_token(self, xsval); > + free(xsval); > + return val; > +} > + > #define xspy_read_watch_doc "\n" \ > "Read a watch notification.\n" \ > "\n" \ > @@ -911,6 +938,7 @@ static PyMethodDef xshandle_methods[] =3D { > XSPY_METH(set_permissions, METH_VARARGS), > XSPY_METH(watch, METH_VARARGS), > XSPY_METH(read_watch, METH_NOARGS), > + XSPY_METH(check_watch, METH_NOARGS), > XSPY_METH(unwatch, METH_VARARGS), > XSPY_METH(transaction_start, METH_NOARGS), > XSPY_METH(transaction_end, METH_VARARGS | METH_KEYWORDS), --=20 Best Regards, Marek Marczykowski-G=C3=B3recki 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? --15rqq6UvmZq3FwB1 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAEBCAAGBQJZxABVAAoJENuP0xzK19cs86AIAJBXqg7oAGit0wA9T0TlrY4T ePlxerhvzCYFPTu8V+dEwOAKKQwwBKO/yajKDftbikkrfLPFdfRNnmOwuu9BOS9z kFfvZxDWDBEP7PpHtoRm4VyiDd4it61PBYP1Qll7OjrAKXjFj779rg4zbNuy/+Sa 8RZt21D0N7DCiHUDXMhxEvLwkNRSyHp92Lo0tniX0htxqbWMzOplcWHkvLnER2Wp mWSZHlzPd7YJY5X5JCRz3ftE1oM0T60NFiYUPMVciFieTgYYaQH73uQ6IRZMQDU9 vYI4ngyNgMii+coLxPXhILCRp3bk8uCxosD8Fgq3URmvEaCqEmqmJlvFbAbIE1Y= =7JJB -----END PGP SIGNATURE----- --15rqq6UvmZq3FwB1-- --===============8344775254366192489== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg== --===============8344775254366192489==--