[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 08/23] libxl: events: Provide libxl__xswait_*
On Tue, 2013-12-17 at 18:35 +0000, Ian Jackson wrote: > +/*----- xswait: wait for a xenstore node to be suitable -----*/ > + > +typedef struct libxl__xswait_state libxl__xswait_state; > + > +/* > + * rc describes the circumstances of this callback: > + * > + * rc==0 > + * > + * The xenstore path (may have) changed. It has been read for > + * you. The result is in data (allocated from the ao gc). > + * data may be NULL, which means that the xenstore read gave > + * ENOENT. > + * > + * If you are satisfied, you MUST call libxl__xswait_stop. > + * Otherwise, xswait will continue waiting and watching and > + * will call you back later. > + * > + * rc==ETIMEDOUT Isn't rc actual a libxl error and hence ERROR_TIMEDOUT? > + * > + * The specified timeout was reached. > + * This has NOT been logged (except to the debug log). > + * xswait will not continue (but calling libxl__xswait_stop is OK). > + * > + * rc!=0 also != E{,RROR_}TIMEDOUT </pedant> > + * > + * Some other error occurred. > + * This HAS been logged. > + * xswait will not continue (but calling libxl__xswait_stop is OK). > + * > + */ > +typedef void libxl__xswait_callback(libxl__egc *egc, > + libxl__xswait_state *xswa, int rc, const char *data); > + > +struct libxl__xswait_state { > + /* caller must fill these in, and they must all remain valid */ > + libxl__ao *ao; > + const char *what; /* for error msgs: noun phrase, what we're waiting for > */ > + const char *path; > + int timeout_ms; /* as for poll(2) */ > + libxl__xswait_callback *callback; > + /* remaining fields are private to xswait */ > + libxl__ev_time time_ev; > + libxl__ev_xswatch watch_ev; > +}; > + > +void libxl__xswait_init(libxl__xswait_state*); > +void libxl__xswait_stop(libxl__gc*, libxl__xswait_state*); /*idempotent*/ > +bool libxl__xswait_inuse(const libxl__xswait_state *ss); > + > +int libxl__xswait_start(libxl__gc*, libxl__xswait_state*); > + > /* > *----- spawn ----- > * _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |