From: Rusty Russell <rusty@rustcorp.com.au>
To: Alexander Viro <viro@math.psu.edu>
Cc: "David S. Miller" <davem@redhat.com>
Cc: rusty@rustcorp.com.au, adam@yggdrasil.com,
R.E.Wolff@BitWizard.nl, linux-kernel@vger.kernel.org
Subject: Re: Rusty's module talk at the Kernel Summit
Date: Thu, 11 Jul 2002 15:13:02 +1000 [thread overview]
Message-ID: <20020711051232.5F93844F8@lists.samba.org> (raw)
In-Reply-To: Your message of "Wed, 10 Jul 2002 23:30:12 -0400." <Pine.GSO.4.21.0207102311290.6250-100000@weyl.math.psu.edu>
In message <Pine.GSO.4.21.0207102311290.6250-100000@weyl.math.psu.edu> you write:
> > So this TLB argument alone is not sufficient :-)
> > I do concur on the "ipv4 as module is difficult to
> > get correct" argument however.
>
> Sure, but consider the amount of tricky modules and amount of easy ones.
> net/ipv4/*.c _is_ tricky; so much that having system with many parts of
> such complexity would be extremely painful.
>
> IOW, yes, we have some very tricky interfaces between the parts of kernel;
> and their trickiness alone guarantees that we don't want to have them
> breeding. Stuff that genuinely needs complex interfaces is *not* something
> you want to be mass-produced.
Sure, if you want to reduce the problem space to "modules which are a
single fs/net/etc device driver" then we can *definitely* work
something out. This works because they have such a narrow and
non-time-critical interface (who cares if we do a gratuitous
atomic_inc on every fs mount?).
To really get this to work well, you should make sure such modules
don't even need init and remove functions, by providing something
like:
I_AM_A_FILESYSTEM_DRIVER("ramfs", ramfs_fs_type);
> I'd rather get the simple (== large) classes into decent shape and then
> deal with what's left. FVO "deal" possibly including "no rmmod for these
> guys".
This was *entirely* my question at the Kernel Summit:
Are modules first class citizens?
Should everything be modular?
What complexity are we prepared to pay?
We *can* do anything, up to and including modules which hand out
references to themselves in interrupt context, and dealing with the
race between "my module count is zero" and "oops, someone jumped in
before I had deactivated myself" without using try_inc_mod_count.
But *should* we? The solution, for those of strong stomach, looks
something like this:
Each module implements: init(), start(), stop(), reinit(), destroy().
Each registerable interface takes a "struct module *" parameter.
Every call through a function ptr does "inc_mod_count(struct->module)"
(Of course, if you make assumptions about a struct
containing only functions from the same module or
in-kernel ones, and knowing that some strategy
functions are always called before others, you can
optimize this).
I don't think we're disagreeing, but I did want to clarify,
Rusty.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
next prev parent reply other threads:[~2002-07-11 5:09 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-07-04 17:24 Adam J. Richter
2002-07-11 2:48 ` Rusty Russell
2002-07-11 2:45 ` David S. Miller
2002-07-11 3:30 ` Alexander Viro
2002-07-11 5:13 ` Rusty Russell [this message]
2002-07-11 6:37 ` Alexander Viro
2002-07-11 7:14 ` Rusty Russell
2002-07-11 10:54 ` Daniel Phillips
2002-07-11 17:37 ` Roman Zippel
2002-07-11 18:01 ` Thunder from the hill
2002-07-11 18:50 ` Daniel Phillips
2002-07-17 18:16 ` bill davidsen
2002-07-17 19:35 ` Thunder from the hill
2002-07-11 18:28 ` Daniel Phillips
2002-07-11 19:48 ` Roman Zippel
2002-07-11 20:29 ` Daniel Phillips
2002-07-11 23:37 ` Alexander Viro
2002-07-12 1:54 ` Daniel Phillips
2002-07-12 3:53 ` Rusty Russell
2002-07-12 6:49 ` Kai Henningsen
2002-07-12 11:30 ` Roman Zippel
2002-07-12 0:00 ` Rusty Russell
2002-07-12 6:57 ` Kai Henningsen
2002-07-19 0:19 ` Richard Gooch
2002-07-22 16:29 ` Alexander Viro
2002-07-23 4:37 ` Richard Gooch
2002-07-11 4:02 ` Cort Dougan
2002-07-11 4:19 ` Arnaldo Carvalho de Melo
2002-07-11 4:46 ` Cort Dougan
2002-07-11 2:55 ` Arnaldo Carvalho de Melo
2002-07-11 3:01 ` Arnaldo Carvalho de Melo
2002-07-11 5:16 ` Rusty Russell
-- strict thread matches above, loose matches on Subject: below --
2002-07-11 5:44 Adam J. Richter
2002-07-11 5:07 Adam J. Richter
2002-07-03 15:53 Adam J. Richter
2002-07-03 17:07 ` Hugh Dickins
2002-07-03 18:46 ` Oliver Neukum
2002-07-03 23:25 ` Keith Owens
2002-07-03 23:09 ` Keith Owens
2002-07-03 7:31 Adam J. Richter
2002-07-03 8:54 ` Rogier Wolff
2002-07-03 12:27 ` Keith Owens
2002-07-03 14:10 ` Keith Owens
2002-07-01 17:20 Adam J. Richter
2002-07-01 16:12 Adam J. Richter
2002-07-01 17:02 ` jlnance
2002-07-03 5:01 ` Keith Owens
2002-07-01 8:45 Keith Owens
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20020711051232.5F93844F8@lists.samba.org \
--to=rusty@rustcorp.com.au \
--cc=davem@redhat.com \
--cc=viro@math.psu.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®