From: Keith Owens <kaos@ocs.com.au>
To: David Woodhouse <dwmw2@infradead.org>
Cc: Antony Suter <antony@mira.net>,
List Linux-Kernel <linux-kernel@vger.kernel.org>,
Allen Unueco <allen@premierweb.com>
Subject: Re: Where did vm_operations_struct->unmap in 2.4.0 go?
Date: Thu, 11 Jan 2001 23:12:05 +1100 [thread overview]
Message-ID: <16427.979215125@ocs3.ocs-net> (raw)
In-Reply-To: Your message of "Thu, 11 Jan 2001 11:42:24 -0000." <5358.979213344@redhat.com>
On Thu, 11 Jan 2001 11:42:24 +0000,
David Woodhouse <dwmw2@infradead.org> wrote:
>Taking away get_module_symbol() and providing a replacement which has link
>order problems wasn't really very sensible.
>
>It's too late to do the sensible thing and deprecate the old version rather
>than having a 'flag day'. But can we at least fix the link order crap?
>
>struct static_inter_module_entry {
> const char *im_name;
> const void *userdata;
>};
>
>#define inter_module_register_static(x,y) \
> static struct static_inter_module_entry __ime_##x \
> __attribute__((unused,__section__(".intermodule")) \
> = { #x, y };
>
>.. and the obvious for looking in that table in inter_module_get().
If object X registers data for object Y to use then X _must_ initialise
before Y. It does not matter whether the registration method is static
or dynamic, the initialisation order must be observed.
Q. With your suggested static method, what happens when Y initialises
before X, calls inter_module_get, retrieves X's static data and
starts to use it before X has initialised?
A. Oops!
The whole point of registration methods is that the owner of the data
decides when they are ready to provide the service. Ensuring that code
is initialised in the correct order, with providers starting before
consumers, is a fact of life.
I dislike the method that the kernel uses to control initialisation
order, but that is an entirely separate problem from inter_module_xxx.
What we really want at startup is a correct initialisation order. What
we have is the order that objects are selected in a Makefile which maps
to the link order of objects in vmlinux which maps to the listed order
of init routines in section .init.text which maps to initialisation
order. The mechanism is three layers away from the problem and it is
difficult to understand for many people.
It would be much nicer to define ordering sets. Code in driver foo
needs the code in driver bar to initialise first. cfi_probe cannot
initialise until cfi_cmdset_0001 and cfi_cmdset_0002 have initialised.
Declare it that way so it is clear what is going on and why, instead of
being implied by the Makefile order via three layers of indirection.
Then let the kernel build system do whatever it takes to honour the
documented initialisation order.
The problem is, Linus likes the current method.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
next prev parent reply other threads:[~2001-01-11 12:12 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-01-10 3:27 Where did vm_operations_struct->unmap in 2.4.0 go? Allen Unueco
2001-01-10 3:50 ` Keith Owens
2001-01-11 5:38 ` Antony Suter
2001-01-11 6:05 ` Keith Owens
2001-01-11 11:42 ` David Woodhouse
2001-01-11 12:12 ` Keith Owens [this message]
2001-01-11 12:32 ` David Woodhouse
2001-01-11 12:46 ` Keith Owens
2001-01-11 13:09 ` Alan Cox
2001-01-11 13:14 ` Keith Owens
2001-01-12 2:12 ` Ingo Oeser
2001-01-12 2:30 ` Keith Owens
2001-01-12 10:27 ` David Woodhouse
2001-01-12 11:55 ` Keith Owens
2001-01-12 13:40 ` David Woodhouse
2001-01-12 12:01 ` Daniel Phillips
2001-01-12 12:18 ` Keith Owens
2001-01-14 10:16 ` Kai Henningsen
2001-01-11 13:25 ` David Woodhouse
[not found] <3A5EFC56.F1A5BCE0@mira.net>
2001-01-12 19:11 ` Christian Zander
2001-01-13 1:11 ` Keith Owens
2001-01-13 10:46 ` David Woodhouse
2001-01-13 12:06 ` Keith Owens
2001-01-13 15:09 ` David Woodhouse
2001-01-13 19:03 ` Russell King
2001-01-14 0:21 ` Keith Owens
2001-01-14 9:43 ` David Woodhouse
2001-01-14 10:05 ` Keith Owens
2001-01-14 10:45 ` David Woodhouse
2001-01-14 4:04 ` Linus Torvalds
2001-01-14 17:46 ` David Woodhouse
2001-01-14 19:12 ` Linus Torvalds
2001-01-14 20:02 ` David Woodhouse
2001-01-14 20:15 ` Linus Torvalds
2001-01-14 21:15 ` David Woodhouse
2001-01-14 21:47 ` Linus Torvalds
2001-01-14 21:57 ` David Woodhouse
2001-01-14 23:00 ` Keith Owens
2001-01-15 9:09 ` David Woodhouse
2001-01-13 11:46 ` Christian Zander
2001-01-13 12:23 ` 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=16427.979215125@ocs3.ocs-net \
--to=kaos@ocs.com.au \
--cc=allen@premierweb.com \
--cc=antony@mira.net \
--cc=dwmw2@infradead.org \
--cc=linux-kernel@vger.kernel.org \
/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