[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] tools/xenstore-watch: Add new timeout parameter
On 03/16/2016 08:57 PM, Wei Liu wrote: > On Wed, Mar 16, 2016 at 08:52:57PM +0200, Razvan Cojocaru wrote: >> On 03/16/2016 08:46 PM, Wei Liu wrote: >>> On Wed, Mar 16, 2016 at 05:50:46PM +0200, Razvan Cojocaru wrote: >>> [...] >>>> } >>>> >>>> @@ -273,27 +274,49 @@ do_chmod(char *path, struct xs_permissions *perms, >>>> int nperms, int upto, >>>> } >>>> >>>> static void >>>> -do_watch(struct xs_handle *xsh, int max_events) >>>> +do_watch(struct xs_handle *xsh, int max_events, int timeout) >>>> { >>>> - int count = 0; >>>> + int rc, ms_timeout = timeout * 1000; >>>> char **vec = NULL; >>>> + struct pollfd fd; >>>> >>>> - for ( count = 0; max_events == -1 || count < max_events; count++ ) { >>>> - unsigned int num; >>>> + fd.fd = xs_fileno(xsh); >>>> + fd.events = POLLIN | POLLERR; >>>> >>>> - vec = xs_read_watch(xsh, &num); >>>> - if (vec == NULL) >>>> - continue; >>>> + do { >>>> + rc = poll(&fd, 1, 100); >>>> >>>> - printf("%s\n", vec[XS_WATCH_PATH]); >>>> - fflush(stdout); >>>> - free(vec); >>>> - } >>>> + if (rc == 0 || (rc < 0 && errno == EINTR)) { >>>> + ms_timeout -= 100; >>> >>> Shouldn't you just exit the loop when getting EINTR? >> >> I don't think so, an EINTR means that a signal has been caught during >> poll() - it's not really a failure case. >> > > What about Ctrl-C ? I think it is reasonable that user want to interrupt > the process. Fair enough, I'll re-spin V2. Thanks, Razvan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |