Hi,
On Mon, 2003-03-31 at 01:02, Fabian Sturm wrote:
It still would be interesting to see if the order of the constructors is different than what is defined in static_init? Probably not.
The order should never differ from the definitions in static_init. And only link-time configurable features should use STATIC_INITIALIZE... or INIT_PRIORITY... all fixed constructors should either use the C++ language or startup.cpp for initialization.
What I mainly missed was the point that not all classes were initialized because they were excluded with the configure options. Mainly the UART_INIT_PRIO and KDB_INIT_PRIO are interchanged (if I got it right).
Not completely, if KDB is used the module that fires up the UART is simply not linked to the final kernel, instead the KDB module is compiled and linked to the kernel and has to fire up the UART on it's own.
So, you simply disable some features by not linking them and thus not starting their constructors. This does not change something with the order of construction.
I think there should be something like the 'Documentation' directory in Linux, where things like static_init, etc. are explained.
So your guess was definitv right! It was the non existing serial port which gets configured by the built in kdb.
In kdb.c is a line with:
if(strstr(cmdline, " -nokdb") || strstr(cmdline, " -noserial")
This is a BUG, we never explored, because we only have machines with serial ports and use a serial console for debugging most of the time. The reason for -noserial was to disable serial ports to not have the slowdown introduced by the serial traffic.
Oh and last but not least, it maybe I have introduced the BUG during the rewrite of the serial driver! Sorry!
if kdb can work without a serial port.
It can't it is for connecting GDB via a serial stub, but our stub is a bit outdated so an old GDB is needed.
It hangs somewhere in here, due to non existing port. So if I disable kdb everything works fine and I end up in the jdb prompt, and if continued with g I get the hello world output!
We should add serial port probing I think.
I hope you don't get confused or crazy while you're using Fiasco.
Thanks a lot for your report.