Subject: Re: CVS commit: src/sys/arch/evbmips
To: Izumi Tsutsui <email@example.com>
From: Garrett D'Amore <firstname.lastname@example.org>
Date: 02/23/2006 11:23:05
Izumi Tsutsui wrote:
> In article <43FE0445.email@example.com>
> firstname.lastname@example.org wrote:
>> We had this conversation before (Simon and I, that is). It isn't
>> possible to have a GENERIC kernel. You *have* to select the board,
>> because you cannot identify all board variants.
> Even so, I would still like to move board_info() into a common file
> and it's better to have a sanity check if only one board is configured
> (then we need #ifdefs like mips/include/cpu.h anyway),
We have a sanity check already -- the link will fail due to multiple
symbol definitions. :-)
The problem is that doing it the other way means I need to add a bunch
of extern declarations (e.g. "extern struct board_info dbau1550_info")
into the machdep code. To get it really right you need something like this:
extern struct board_info dbau1550_info;
Then you also have in the code;
I am generally *not* fond of #ifdef jungles, and your proposal creates
two of them.
The other problem with this is that I can imagine having a board
defintion that actually supports a board *family* (where the type of
board is run-time detectable via a register), and then what do you do?
By having the board_info() function, you can return a different
board_info based on a run-time test that you can't do with CPP macros alone.
>> The current set up is
>> what we agreed to.
> ...but I won't strongly object to responsible people since
> it's just my "feeling" ;-)
> Izumi Tsutsui
Garrett D'Amore, Principal Software Engineer
Tadpole Computer / Computing Technologies Division,
General Dynamics C4 Systems
Phone: 951 325-2134 Fax: 951 325-2191