On Thu, 2004-10-14 at 15:41, Currie Reid wrote:
> Hello all,
>
> I am just trying to understand the underlying behaviour of adeos, and in
> my testing I have come across some behaviour that I want to verify is
> correct. If I set a handler for ADEOS_EXIT_PROCESS without registering a
> domain, then the handler is in the root domain and behaves as expected
> (thank you printk!). Next, I do a handler in a registered domain for
> ADEOS_EXIT_PROCESS and perform 2 tests - 1 where the handler doesn't
> propagate the event to the root domain, and one where it does. These both
> behave as expected - when propagated, I see the handler executing once for
> each domain. But when I unload the module and unregister the domain, the
> handler in the root domain no longer executes - I would have thought that
> the handler would still be in place.
>
> If I register 2 domains and duplicate the test, when the higher priority
> domain is unregistered, the lower priority domain starts handling the
> events again, as expected. I haven't delved into to code to see how easy
> this is to change - mostly because I'm not sure that this isn't
> uninitended behaviour.
>
Actually, this is. I mean: a bug. Please try applying the following
patch to adeos/generic.c and let me know of the outcome. This said, keep
in mind that fixing this bug will make your box crash if you intend to
keep a handler attached which ends up disappearing from the address
space after the module is unloaded.
Thanks for the report.
--- generic.c 4 Oct 2004 17:34:19 -0000 1.17
+++ generic.c 14 Oct 2004 16:24:53 -0000
@@ -173,7 +173,7 @@
for (event = 0; event < ADEOS_NR_EVENTS; event++)
/* Need this to update the monitor count. */
- adeos_catch_event(event,NULL);
+ adeos_catch_event_from(adp,event,NULL);
#ifdef CONFIG_SMP
{
--
Philippe.