Anthony PERARD writes ("Re: [Xen-devel] [PATCH V2] libxl: Set path to console on
domain startup."):
On Tue, Dec 16, 2014 at 09:30:28AM +0000, Ian Campbell wrote:
> Unless by "not running" you meant bottlenecked or not keeping up
> perhaps.
Well, I did meant no xenconsoled process. But after, I also tried `kill
-STOP`, but the same things is happening.
I think this is a bug. I imagine that you can cause `xl create -c' to
malfunction too.
> > Or, should I set the callback to NULL and have the
> > domain_create_console_available event sent through
> > the callback set by libxl_event_register_callbacks()?
>
> That would make sense, except I don't see libxl_evdisable_foo for these
> events, so I'm not sure it is possible.
Well, the domain_create_console_available event is report by
libxl__ao_progress_report which will either callback() or call
libxl__event_occurred(). So does not seams better to set callback to
NULL.
The console available notification is only available via the ao
progress mechanism. So you have to pass a non-NULL aop_console_how,
and the notification will always be generated during the create.
Your options for having the notification delivered are:
I. aop_console_how->callback != NULL:
libxl will call
aop_console_how->callback(aop_console_how->for_callback)
II. aop_console_how->callback == NULL:
libxl will construct an libxl_event *event with
event->domid = the domid of the domain being constructed
event->domuuid = its uuid
event->for_user = aop_console_how->for_event
event->type = LIBXL_EVENT_TYPE_DOMAIN_CREATE_CONSOLE_AVAILABLE
What happens to that event depends on whether and how
libxl_event_register_callbacks has been called.
II(a): If libxl_event_register_callbacks(,hooks,user) was called
and also the bit is set ie
!!(hooks->event_occurs_mask
& (1UL << LIBXL_EVENT_TYPE_DOMAIN_CREATE_CONSOLE_AVAILABLE)):
libxl will call
hooks->event_occurs(user,event)
II(b): If libxl_event_register_callbacks(,hooks,user) was NOT called
or if the bit is clear:
libxl will queue the event for retrieval by libxl_event_check
or libxl_event-wait. (And if the application doesn't call those,
the application will never be notified; the event will be
retained until the libxl ctx is destroyed and then discarded.)
I mention all of these for completeness, and for future reference for
anyone reading the archives later.
In libxl you want option I.
Ian.