summaryrefslogtreecommitdiffstats
path: root/src/core
Commit message (Collapse)AuthorAgeFilesLines
...
* [efi] Add EFI image format and basic runtime environmentMichael Brown2008-10-131-0/+6
| | | | | | | | | We have EFI APIs for CPU I/O, PCI I/O, timers, console I/O, user access and user memory allocation. EFI executables are created using the vanilla GNU toolchain, with the EXE header handcrafted in assembly and relocations generated by a custom efilink utility.
* [sanboot] Quick and dirty hack to make SAN boot protocols selectableMichael Brown2008-10-131-0/+11
|
* [monojob] Release reference on completed jobMichael Brown2008-10-131-0/+1
| | | | | | monojob_wait() was holding a reference to the completed job, meaning that various objects would not be freed until the next job was plugged in to the monojob interface.
* [timer] Remove now-obsolete references to TIMER_BIOS and TIMER_RDTSCMichael Brown2008-10-131-10/+0Star
|
* [nap] Formalise the CPU sleeping APIMichael Brown2008-10-133-6/+5Star
|
* [monojob] Allow for extremely slow system timersMichael Brown2008-10-121-1/+1
| | | | | The EFI timer runs at one tick per second, so using ">" rather than ">=" results in a two-second gap between dots.
* [timer] Formalise the timer APIMichael Brown2008-10-122-84/+13Star
| | | | | | We now have two implementations for the timer API: one using the time-of-day counter at 40:70 and one using RDTSC. Both make use of timer2_udelay().
* [process] Add DBG2() messages to help track down frozen processesMichael Brown2008-10-121-0/+2
|
* [config] Split console configuration out to config/console.hMichael Brown2008-10-121-12/+3Star
|
* [ioapi] Remove old io.h file and switch all users over to <gpxe/io.h>Michael Brown2008-10-124-4/+4
|
* [settings] Allow for setting fetchers to fail in fetchf_hex()Michael Brown2008-09-261-0/+2
|
* [settings] Add the uristring setting typeMichael Brown2008-09-241-0/+53
| | | | | | | | | | | | | | | This allows settings to be expanded in a way that is safe to include within a URI string, such as kernel http://10.0.0.1/boot.php?mf=${manufacturer:uristring} where the ${manufacturer} setting may contain characters that are not permitted (or have reserved purposes) within a URI. Since whitespace characters will be URI-encoded (e.g. "%20" for a space character), this also works around the problem that spaces within an expanded setting would cause the shell to split command-line arguments incorrectly.
* [uri] Add uri_encode() and uri_decode() functions for URI character encodingMichael Brown2008-09-241-0/+78
|
* [comboot] Add COMBOOT and COM32 supportDaniel Verkamp2008-08-291-0/+8
|
* [settings] Avoid overwriting the start of .text in fetch_string_setting()Michael Brown2008-08-141-1/+2
| | | | | | | | | | fetch_string_setting() was subtracting one from the length of the to-be-NUL-terminated buffer in order to obtain the length of the unterminated buffer to be passed to fetch_setting(). This works extremely well unless the length of the to-be-NUL-terminated buffer is zero, at which point we end up giving fetch_setting() a buffer of length -1UL, thereby inviting it to overwrite as much memory as it wants...
* [iSCSI] Add support for mutual CHAPMichael Brown2008-08-111-14/+67
| | | | Allow initiator to verify target authentication using CHAP.
* [cmdline] Add setting expansion using ${...} syntaxMichael Brown2008-07-271-2/+96
| | | | | | | | | Allow settings to be expanded in arbitrary commands, such as kernel http://10.0.0.1/boot.php?uuid=${uuid} Also add the "echo" command, as being the easiest way to test this features.
* [ui] Add progress dots while waiting on any foreground jobMichael Brown2008-07-241-3/+10
| | | | | | | | | Print one dot per second while waiting in monojob.c (e.g. for DHCP, for file downloads, etc.), to inform user that the system has not locked up. Patch contributed by Andrew Schran <aschran@google.com>, minor modification by me.
* [iSCSI] Support Windows Server 2008 direct iSCSI installationMichael Brown2008-07-175-18/+27
| | | | | | | | | | | | | Add yet another ugly hack to iscsiboot.c, this time to allow the user to inhibit the shutdown/removal of the iSCSI INT13 device (and the network devices, since they are required for the iSCSI device to function). On the plus side, the fact that shutdown() now takes flags to differentiate between shutdown-for-exit and shutdown-for-boot means that another ugly hack (to allow returning via the PXE stack on BIOSes that have broken INT 18 calls) will be easier. I feel dirty.
* [image] Revert "clear LOADED flag" patchMichael Brown2008-07-081-10/+1Star
| | | | | | | | | Clearing the LOADED flag actually prevents users from doing clever things such as loading an image, then loading a patch image, then executing the first image. (image_exec() checks for IMAGE_LOADED, so this sequence of operations will fail if the LOADED flag gets cleared.) This reverts commit 14c080020fb37cb34fe74213393f47bd2ad8b9bc.
* [image] Clear LOADED flag on all other images when loading a new imageMichael Brown2008-07-081-1/+10
| | | | | | Loading an image may overwrite part or all of any previously-loaded images, so we should clear the LOADED flag for all images prior to attempting to load a new image.
* [GDB] Provide functions to manually enter GDB stub.Stefan Hajnoczi2008-06-302-32/+38
|
* [GDB] Obey flow control when GDB connects.Stefan Hajnoczi2008-06-301-0/+4
|
* [GDB] UDP clean up and add netdev refcntStefan Hajnoczi2008-06-301-19/+47
|
* [GDB] Add watch and rwatch hardware watchpointsStefan Hajnoczi2008-06-301-1/+21
|
* [GDB] Remote debugging over UDPStefan Hajnoczi2008-06-304-43/+324
| | | | | | | | | | | | | | | | | This commit implements GDB over UDP. Using UDP is more complex than serial and has required some restructuring. The GDB stub is now built using one or both of GDBSERIAL and GDBUDP config.h options. To enter the debugger, execute the gPXE shell command: gdbstub <transport> [<options>...] Where <transport> is "serial" or "udp". For "udp", the name of a configured network device is required: gdbstub udp net0 The GDB stub listens on UDP port 43770 by default.
* [GDB] Atomic read/write for device memoryStefan Hajnoczi2008-06-301-13/+53
|
* [GDB] Handle kill and detach packets.Stefan Hajnoczi2008-06-301-5/+8
| | | | | This commit also includes a test to ensure that single stepping works, since continue, kill, detach, and single step all share code.
* [console] Call cpu_nap() only if there is no input waitingMichael Brown2008-06-111-6/+8
| | | | | | | | | | | | | | | | | | | | Avoid calling cpu_nap() until after we have determined that there is no input ready to read. This avoids delaying for one timer interrupt (~50ms) in the case of if ( iskey() ) char = getkey() which happens to be present in monojob.c, which is where we spend most of our time looping (e.g. during any download). This should eliminate the irritating tendency of gPXE to lose keypresses. Discovered on a Dell system where the serial port seems to send in a constant stream of 0xff characters; this wouldn't be a problem in itself except that each one triggers the 50ms delay (as mentioned above), which really kills performance.
* [ELF] Add ability to boot ELF images generated by wraplinux and mkelfImageMichael Brown2008-06-091-4/+1Star
| | | | | | | | | | | | | | | | | | | Delete ELF as a generic image type. The method for invoking an ELF-based image (as well as any tables that must be set up to allow it to boot) will always depend on the specific architecture. core/elf.c now only provides the elf_load() function, to avoid duplicating functionality between ELF-based image types. Add arch/i386/image/elfboot.c, to handle the generic case of 32-bit x86 ELF images. We don't currently set up any multiboot tables, ELF notes, etc. This seems to be sufficient for loading kernels generated using both wraplinux and coreboot's mkelfImage. Note that while Etherboot 5.4 allowed ELF images to return, we don't. There is no callback mechanism for the loaded image to shut down gPXE, which means that we have to shut down before invoking the image. This means that we lose device state, protection against being trampled on, etc. It is not safe to continue afterwards.
* [GDB] Add GDB stub for remote debuggingStefan Hajnoczi2008-06-052-0/+333
| | | | See http://etherboot.org/wiki/dev/gdbstub for documentation.
* [Serial] Split serial console from serial driverStefan Hajnoczi2008-06-053-30/+45
|
* [GDBSYM] Remove unused gdbsym.cStefan Hajnoczi2008-06-051-3/+0Star
| | | | | | The GDBSYM config.h option was an attempt at QEMU GDB debugging. I have removed the code since it is unused and may confuse people wanting to use the GDB stub.
* [SMBIOS] Interpret UUIDs as being in network-endian orderMichael Brown2008-05-201-3/+3
| | | | | | | | | Various specification documents disagree about the byte ordering of UUIDs. However, SMBIOS seems to use the standard in which everything is in network-endian order. This doesn't affect anything sent on the wire; only what gets printed on the screen when the "uuid" variable is displayed.
* [Settings] Expose SMBIOS via settings APIMichael Brown2008-03-281-4/+65
| | | | In particular, expose the system UUID as a setting ("smbios/uuid").
* [Settings] find_child_settings() accepts a NULL parentMichael Brown2008-03-271-0/+4
|
* [usr] Offer user a second chance to enter the shell on boot failureMichael Brown2008-03-271-3/+31
|
* [PXEXT] Avoid queueing zero-length buffers in posix_io.cMichael Brown2008-03-251-6/+12
| | | | | read_user() assumes that zero-length buffers don't exist, and optimises around this.
* [Settings] Remove assumption that all settings have DHCP tag valuesMichael Brown2008-03-253-292/+202Star
| | | | | | | | | | | | Allow for settings to be described by something other than a DHCP option tag if desirable. Currently used only for the MAC address setting. Separate out fake DHCP packet creation code from dhcp.c to fakedhcp.c. Remove notion of settings from dhcppkt.c. Rationalise dhcp.c to use settings API only for final registration of the DHCP options, rather than using {store,fetch}_setting throughout.
* [PXEXT] Avoid returning a false EOF when we have an empty buffer queuedMichael Brown2008-03-251-1/+3
|
* [Settings] Add named setting for next-serverMichael Brown2008-03-241-0/+6
| | | | | It's probably easier to have a named setting for next-server, rather than to explain to people why they need to pretend it is option 175.3.
* [Settings] copy_settings() should not fail if some settings are missing!Michael Brown2008-03-241-39/+17Star
|
* [Settings] Bugfix: store_setting() now applies changes even on root blockMichael Brown2008-03-221-3/+2Star
|
* [Settings] Implement simple_settings backed with extensible DHCP optionsMichael Brown2008-03-221-18/+38
|
* [Settings] DHCP is now working using the new settings API.Michael Brown2008-03-211-8/+6Star
|
* [Settings] Migrate DHCP and NVO code to the new settings API (untested)Michael Brown2008-03-212-90/+227
|
* [Settings] Use a settings applicator in ibft.cMichael Brown2008-03-211-31/+46
|
* [IPv4] Add a config option for IPv4Michael Brown2008-03-211-11/+12
| | | | | IPv4 may not always be dragged into the link, so add a specific configuration option for it.
* [Settings] Convert code in src/usr to use settings API.Michael Brown2008-03-211-4/+31
|
* [Settings] Introduce settings applicators.Michael Brown2008-03-211-9/+102
| | | | | | | Convert DHCP option applicators in dns.c and iscsi.c to settings applicators. Kill off DHCP option applicators.