Re: [PATCH] 2.5.1-pre10 #ifdef CONFIG_KMOD Cleanup Part II.

From: Rusty Russell (rusty@rustcorp.com.au)
Date: Fri Dec 14 2001 - 20:26:29 EST


In message <Pine.LNX.4.40.0112141019100.11489-100000@waste.org> you write:
> On Thu, 13 Dec 2001, Rusty Russell wrote:
>
> > 2) Adds request_module_start()/request_module_end() macros, eg.
> >
> > struct protocol protoptr;
> >
> > request_module_start("proto-%u", protonum) {
> > /* search for protocol, set protoptr. */
> >
> > } request_module_end(protoptr != NULL);
> >
> > This loops once if !CONFIG_KMOD or protoptr != NULL after first
> > iteration, otherwise calls request_module and loops a second time.
>
> Clever, but very un-C-like. Perhaps something like this:
>
> do {
> /* search for protocol, set protoptr. */
> } while (protoptr != NULL || request_module("proto-%u",protonum)==0);
>
> ..with request_module returning -EBUSY if the module is already loaded.

This can spin forever 8(. I would love to have just a
request_module_loop() macro, eg:

        request_module_loop("proto-%u", protonum) {
                ...
        }

But it turns out not to be possible without more C 9x compliance
(ie. local variable decls in for () loops).

> > 3) Adds a request_module_unless() macro, eg:
> >
> > protoptr = request_module_unless(protoptrs[proto],
> > "proto-%u", protonum);
>
> Also weird.

Ack. However, I was looking for positive suggestions 8)

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/



This archive was generated by hypermail 2b29 : Sat Dec 15 2001 - 21:00:29 EST