|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 3/3] libxl: ocaml: use 'for_app_registration' in osevent callbacks
Rob Hoes writes ("RE: [PATCH v2 3/3] libxl: ocaml: use 'for_app_registration'
in osevent callbacks"):
> Ian Jackson wrote:
> > And looking at that, I see that stub_libxl_osevent_occurred_timeout
> > doesn't destroy the for_app.
>
> Hmm... I thought the for_app stuff is only for the registration
> bits? The osevent_occurred functions don't use or receive it? They
> do get for_libxl, but that's entirely in C and opaque to ocaml.
The usual sequence of events is
timeout_register
with your new patch:
stashes for_libxl value in ocaml gc
calls ocaml libxl_timeout_register with for_libxl
stashes that function's return in for_app and adds it to the gc
timeout occurs
the timeout machinery calls stub_libxl_osevent_occurred_timeout
with the for_libxl value it has kept somehow
stub_libxl_osevent_occurred_timeout calls
libxl_osevent_occurred_timeout
Now the timeout is gone and nothing will deal with it again. Who
cleans up the for_app value ?
Perhaps you are confused and don't realise that timeouts are one-shot.
See the comment next to libxl_osevent_occurred_timeout.
> I do assume here that timeout_modify will be called only once for a
> given timeout registration. Is that correct?
The specification is that it may be called more than once, or not at
all. The cleanup needs to be done in
stub_libxl_osevent_occurred_timeout.
(And you don't probably don't want a binding for timeout_deregister.
That's only there for compatibility with what are now old libxls, and
only if those libxls don't have the race patches which are necessary
for reliable operation.)
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |