diff options
author | Michael Brown | 2005-03-08 19:53:11 +0100 |
---|---|---|
committer | Michael Brown | 2005-03-08 19:53:11 +0100 |
commit | 3d6123e69ab879c72ff489afc5bf93ef0b7a94ce (patch) | |
tree | 9f3277569153a550fa8d81ebd61bd88f266eb8da /src/core/config.c | |
download | ipxe-3d6123e69ab879c72ff489afc5bf93ef0b7a94ce.tar.gz ipxe-3d6123e69ab879c72ff489afc5bf93ef0b7a94ce.tar.xz ipxe-3d6123e69ab879c72ff489afc5bf93ef0b7a94ce.zip |
Initial revision
Diffstat (limited to 'src/core/config.c')
-rw-r--r-- | src/core/config.c | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/src/core/config.c b/src/core/config.c new file mode 100644 index 00000000..180b0669 --- /dev/null +++ b/src/core/config.c @@ -0,0 +1,161 @@ +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2, or (at + * your option) any later version. + */ + +#include "etherboot.h" +#include "nic.h" +#ifdef BUILD_SERIAL +#include ".buildserial.h" +#define xstr(s) str(s) +#define str(s) #s +#endif + +void print_config(void) +{ + printf( "Etherboot " VERSION +#ifdef BUILD_SERIAL + " [build " +#ifdef BUILD_ID + BUILD_ID " " +#endif + "#" xstr(BUILD_SERIAL_NUM) "]" +#endif /* BUILD_SERIAL */ + " (GPL) http://etherboot.org\n" + "Drivers: " ); +#ifdef CONFIG_PCI + pci_enumerate(); +#endif +#ifdef CONFIG_ISA + isa_enumerate(); +#endif + printf( " Images: " +#ifdef TAGGED_IMAGE + "NBI " +#endif +#ifdef ELF64_IMAGE + "ELF64 " +#endif +#ifdef ELF_IMAGE + "ELF " +#endif +#ifdef COFF_IMAGE + "COFF " +#endif +#ifdef IMAGE_FREEBSD + "FreeBSD " +#endif +#ifdef IMAGE_MULTIBOOT + "Multiboot " +#endif +#ifdef AOUT_IMAGE + "a.out " +#endif +#ifdef WINCE_IMAGE + "WINCE " +#endif +#ifdef PXE_IMAGE + "PXE " +#endif +#ifdef PXE_EXPORT /* All possible exports */ + " Exports: " +#ifdef PXE_EXPORT + "PXE " +#endif +#endif /* All possible exports */ + " " + ); +#if (BOOTP_SERVER != 67) || (BOOTP_CLIENT != 68) + printf( "[DHCP ports %d and %d] ", + BOOTP_SERVER, BOOTP_CLIENT); +#endif + putchar('\n'); + printf( "Protocols: " +#ifdef RARP_NOT_BOOTP + "RARP " +#else +# ifndef NO_DHCP_SUPPORT + "DHCP " +# else + "BOOTP " +# endif +#endif +#ifdef DOWNLOAD_PROTO_TFTP + "TFTP " +#endif +#ifdef DOWNLOAD_PROTO_NFS + "NFS " +#endif +#ifdef DOWNLOAD_PROTO_SLAM + "SLAM " +#endif +#ifdef DOWNLOAD_PROTO_TFTM + "TFTM " +#endif +#ifdef DOWNLOAD_PROTO_HTTP + "HTTP " +#endif +#ifdef PROTO_LACP + "LACP " +#endif +#ifdef DNS_RESOLVER + "DNS " +#endif + "\n"); +} + +static const char *driver_name[] = { + "nic", + "disk", + "floppy", +}; + +int probe(struct dev *dev) +{ + const char *type_name; + type_name = ""; + if ((dev->type >= 0) && + ((unsigned)dev->type < sizeof(driver_name)/sizeof(driver_name[0]))) { + type_name = driver_name[dev->type]; + } + if (dev->how_probe == PROBE_FIRST) { + dev->to_probe = PROBE_PCI; + memset(&dev->state, 0, sizeof(dev->state)); + } + if (dev->to_probe == PROBE_PCI) { +#ifdef CONFIG_PCI + dev->how_probe = pci_probe(dev, type_name); +#else + dev->how_probe = PROBE_FAILED; +#endif + if (dev->how_probe == PROBE_FAILED) { + dev->to_probe = PROBE_ISA; + } + } + if (dev->to_probe == PROBE_ISA) { +#ifdef CONFIG_ISA + dev->how_probe = isa_probe(dev, type_name); +#else + dev->how_probe = PROBE_FAILED; +#endif + if (dev->how_probe == PROBE_FAILED) { + dev->to_probe = PROBE_NONE; + } + } + if ((dev->to_probe != PROBE_PCI) && + (dev->to_probe != PROBE_ISA)) { + dev->how_probe = PROBE_FAILED; + + } + return dev->how_probe; +} + +void disable(struct dev *dev) +{ + if (dev->disable) { + dev->disable(dev); + dev->disable = 0; + } +} |