Re: Module Refcount & Stuff mini-FAQ

Rusty Russell (rusty@rustcorp.com.au)
Mon, 25 Nov 2002 09:50:46 +1100


In message <20021118233047.P1407@almesberger.net> you write:
> Rusty Russell wrote:
> > Q: When does try_module_get(owner) fail?
> > A: When the module is not ready to be entered (ie. still in
> > init_module) or it is being removed. It fails to prevent you
> > entering the module as it is being discarded (init might fail, or
> > it's being removed).
>
> I'd suggest "It fails in order to [...]" to avoid the "does work
> exactly NOT as advertised" ambiguity ;-)

Ah, thanks, good catch. I changed it to "This prevents you".

> > Q: But modules call my register() routine which wants to call back
> > into one of the function pointers immediately, and so
> > try_module_get() fails!
> > A: You're being called from the module, so someone already has a
> > reference (unless there's a bug), so you don't need a
> > try_module_get().
>
> Hmm, I haven't really looked at your new code, but this sounds as
> if try_module_get gets an exclusive lock. Is this true ? Doesn't
> seem to make sense to me.

No, it doesn't. The question is badly phrased. How about:

Q: But the modules' init routine calls my register() routine which
wants to call back into one of the function pointers immediately,
and so try_module_get() fails! (because the module is not finished
initializing yet)
A: You're being called from the module, so someone already has a
reference (unless there's a bug), so you don't need a
try_module_get().

This does mean that if you were to register a structure for
*another* module (does anyone do this?) you'd need to have a
reference to it.

> > Hope that helps?
>
> Don't you want to repeat the golden rule at the end, just as a
> polite reminder ? :-) (Just kidding.)

Heh.

Well, if we continue to start modules unisolated, I need to rewrite
the FAQ anyway...

Thanks,
Rusty.

--
  Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/