Message ID | 1506097274-130806-2-git-send-email-euan.harris@citrix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Sep 22, 2017 at 05:21:12PM +0100, Euan Harris wrote: > xs_fileno() returns a file descriptor which receives events when Xenstore > watches fire. Exposing this in the Python bindings is a prerequisite > for writing event-driven clients in Python. > > Signed-off-by: Euan Harris <euan.harris@citrix.com> > Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> > Reviewed-by: Wei Liu <wei.liu2@citrix.com> Acked-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> > --- > Changed since v2: > * Use PyLong_FromLong instead of PyInt_FromLong > --- > tools/python/xen/lowlevel/xs/xs.c | 20 ++++++++++++++++++++ > 1 file changed, 20 insertions(+) > > diff --git a/tools/python/xen/lowlevel/xs/xs.c b/tools/python/xen/lowlevel/xs/xs.c > index aba5a20..3a827b0 100644 > --- a/tools/python/xen/lowlevel/xs/xs.c > +++ b/tools/python/xen/lowlevel/xs/xs.c > @@ -453,6 +453,25 @@ static PyObject *xspy_watch(XsHandle *self, PyObject *args) > } > > > +#define xspy_fileno_doc "\n" \ > + "Return the FD to poll for notifications when watches fire.\n" \ > + "Returns: [int] file descriptor.\n" \ > + "\n" > + > +static PyObject *xspy_fileno(XsHandle *self) > +{ > + struct xs_handle *xh = xshandle(self); > + int fd; > + > + if (!xh) > + return NULL; > + > + fd = xs_fileno(xh); > + > + return PyLong_FromLong(fd); > +} > + > + > #define xspy_read_watch_doc "\n" \ > "Read a watch notification.\n" \ > "\n" \ > @@ -887,6 +906,7 @@ static PyMethodDef xshandle_methods[] = { > XSPY_METH(release_domain, METH_VARARGS), > XSPY_METH(close, METH_NOARGS), > XSPY_METH(get_domain_path, METH_VARARGS), > + XSPY_METH(fileno, METH_NOARGS), > { NULL /* Sentinel. */ }, > }; >
On Fri, Sep 22, 2017 at 07:50:04PM +0200, Marek Marczykowski-Górecki wrote: > On Fri, Sep 22, 2017 at 05:21:12PM +0100, Euan Harris wrote: > > xs_fileno() returns a file descriptor which receives events when Xenstore > > watches fire. Exposing this in the Python bindings is a prerequisite > > for writing event-driven clients in Python. > > > > Signed-off-by: Euan Harris <euan.harris@citrix.com> > > Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> > > Reviewed-by: Wei Liu <wei.liu2@citrix.com> > > Acked-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> Thanks for the quick turnaround. I've queued this series up for applying for 4.10.
diff --git a/tools/python/xen/lowlevel/xs/xs.c b/tools/python/xen/lowlevel/xs/xs.c index aba5a20..3a827b0 100644 --- a/tools/python/xen/lowlevel/xs/xs.c +++ b/tools/python/xen/lowlevel/xs/xs.c @@ -453,6 +453,25 @@ static PyObject *xspy_watch(XsHandle *self, PyObject *args) } +#define xspy_fileno_doc "\n" \ + "Return the FD to poll for notifications when watches fire.\n" \ + "Returns: [int] file descriptor.\n" \ + "\n" + +static PyObject *xspy_fileno(XsHandle *self) +{ + struct xs_handle *xh = xshandle(self); + int fd; + + if (!xh) + return NULL; + + fd = xs_fileno(xh); + + return PyLong_FromLong(fd); +} + + #define xspy_read_watch_doc "\n" \ "Read a watch notification.\n" \ "\n" \ @@ -887,6 +906,7 @@ static PyMethodDef xshandle_methods[] = { XSPY_METH(release_domain, METH_VARARGS), XSPY_METH(close, METH_NOARGS), XSPY_METH(get_domain_path, METH_VARARGS), + XSPY_METH(fileno, METH_NOARGS), { NULL /* Sentinel. */ }, };