Re: Etherboot 5.5
Timothy Legge <[email protected]>
| Newsgroups | gmane.network.etherboot.devel |
|---|---|
| Message-ID | <[email protected]> |
Michael Brown wrote:
> New features that are already in place include:
>
> An improved build system:
>
> Changing configuration options no longer requires rebuilding the
> entire Etherboot code tree.
>
> All code is compiled. Only the objects we want are linked in. This
> reduces #ifdef spaghetti while keeping binary sizes small. See
> http://www.etherboot.org/api/ifdef_harmful.html for details.
Very good, the sheer number of configurations was mind boggling.
> Standardised debugging. To enable debugging of a particular component
> (e.g. the PCI bus), simply append DEBUG=pci to the command line, e.g.
> "make bin/rtl8139.dsk DEBUG=pci"
This is very nice, it was one of the things I have been thinking of for
some time. I was thinking of it at the nic driver level but you have
considerable expanded the scope.
> Arbitrary alignment (via __attribute__((aligned(x))) is supported and
> will be honoured by the relocation code.
Cool, I see you fixed the r8169...
> Adding new features (e.g. new drivers, new download protocols, new
> console types) requires *no* changes to the core code, or to files
> such as "Families". Just drop in the .c file and it will work.
Very nice, addind drivers and protocols was aleardy easy, this is
incredible. ;-)
> The all-drivers image has been reduced in size by about 52%, simply by
> sharing buffer space between drivers.
Great!
> Support for a much wider range of buses. We now support PCI, ISAPnP,
> EISA, MCA and ISA as individual buses, rather than pretending that
> everything is either PCI or plain old ISA. ISAPnP code works for cards
> other than the 3c515.
Very good. The ISAPnP was always a hack. I was suprised when I learned
it worked for other people as it was all about me and my 486 when I put
it together.
> A concept of "errno", allowing for proper PXE status codes and more
> user-friendly error messages.
>
> A new real-mode call interface (again!).
>
> The ability to operate completely in 16-bit real mode, never switching
> to protected mode. This is necessary in order to comply fully with the
> PXE "specification". This is controlled by a compile-time option
> -DKEEP_IT_REAL; off by default.
I understand that this is one of the more difficult parts of the PXE
spec. Doesn't it contradict some other requirement in the spec (not
that that s unusual?
> Automatically-generated internal API documentation via doxygen. See
> http://www.etherboot.org/api/files.html
I browsed this a little today. I am looking at using doxygen at work so
this is timely. I must brush up on what needs to be done and update
some of the driver documentation.
Wow!! You have been busy. I browsed the cvs via the web and the sheer
number of changes are amazing. You must not have slept since Christmas.
> Of course, none of this comes for free. The following features are
> currently broken:
Not to worry, I am sure most of it will get fixed fairly quickly.
> All architectures except for i386. If anyone wants to donate ia64,
> armnommu, or e1 hardware to me, then I can do something about this
> myself.
I don't know if e1 even worked in 5.2.
> To forestall the inevitable questions: yes, it was worth breaking all
> this. The internal architecture of Etherboot had become far too
> convoluted, and was in dire need of being torn apart and reassembled.
Such a huge amount of work does not come without issues. Each of the
last number of versions of Etherboot have broken a lot of things. They
get fixed...
BTW, do we need an updated compiler/build tools? I received the
following message from the first build I tried:
In file included from arch/i386/core/hooks.c:1:
arch/i386/include/registers.h:19: warning: declaration does not declare
anything
arch/i386/include/registers.h:87: warning: declaration does not declare
anything
arch/i386/include/registers.h:88: warning: declaration does not declare
anything
In file included from include/etherboot.h:157,
from include/buffer.h:4,
from include/dev.h:6,
from include/main.h:4,
from arch/i386/core/hooks.c:2:
include/tftp.h:88: warning: "struct buffer" declared inside parameter list
include/tftp.h:88: warning: its scope is only this definition or
declaration, which is probably not what you want
arch/i386/core/hooks.c: In function `arch_main':
arch/i386/core/hooks.c:20: error: structure has no member named `eax'
arch/i386/core/hooks.c:23: error: structure has no member named `eax'
make: *** [bin/hooks.o] Error 1
[tim@server src]$ gcc --v
Reading specs from /usr/lib/gcc/i386-redhat-linux/3.4.3/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --enable-shared --enable-threads=posix
--disable-checking --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-java-awt=gtk
--host=i386-redhat-linux
Thread model: posix
gcc version 3.4.3 20050227 (Red Hat 3.4.3-22.fc3)
Regards
Tim
-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_id=7412&alloc_id=16344&op=click