[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
Ian Jackson wrote: > 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. One part of my brain knew that, but another part wrote this function... :) I'll send an update. > > 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.) It is already not there on the ocaml side for this reason. There is just a stub that raises an error, which is given to osevent_register_hooks (just to be sure). I should probably just put an abort in there rather than it raising an ocaml exception as it does now... Cheers, Rob _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |