Michael Brown
6d32f0e6e2
Changed to use the generic stream API.
2007-01-31 02:09:13 +00:00
Michael Brown
02f18565da
First sketch of stream API
2007-01-31 00:40:35 +00:00
Michael Brown
55601b2d38
Placeholder
2007-01-30 22:55:19 +00:00
Michael Brown
0e996b81cf
Added blocksize for the benefit of HMAC code
2007-01-30 22:54:43 +00:00
Michael Brown
811db204a6
Added cipher wrapper functions
2007-01-30 22:54:20 +00:00
Michael Brown
b3e4418ea8
Missing check-in
2007-01-30 22:53:59 +00:00
Michael Brown
db2fde474e
Generalise digest_algorithm to crypto_algorithm.
2007-01-30 14:55:17 +00:00
Michael Brown
2f7eac1646
Low-overhead filter streams
2007-01-30 12:17:03 +00:00
Michael Brown
ddf3b56d47
Definition of a (hopefully) generic stream API
2007-01-30 12:16:36 +00:00
Michael Brown
395c76e94d
Use "dbg_stream" rather than "stream" as a variable name in
...
DBG_AC_IF(), to avoid namespace collisions.
2007-01-30 10:12:19 +00:00
Michael Brown
7d9267561b
Don't call PXENV_STOP_UNDI in the kpxeprefix. This slighy breaks the
...
clean separation between loading and starting, but does mean that more
PXE stacks survive the process.
2007-01-29 15:21:10 +00:00
Michael Brown
2cf1e33df1
Split bootsector execution code out into bootsector.c.
...
Added basic El Torito ISO image boot capability
2007-01-29 04:21:38 +00:00
Michael Brown
bde8878eef
Keep HTTP progress updated, and display a progress indicator during the
...
download
2007-01-29 04:19:45 +00:00
Michael Brown
1a79437888
Added async_block_progress() and default SIGUPDATE handler.
2007-01-29 04:15:24 +00:00
Michael Brown
c42a384709
Moved most buffer debug messages to DBG2.
...
Make expand_buffer() a non-inline function, so that we can add debug
messages.
Expandable buffers now don't *always* round up to the next power of two.
This allows e.g. loading a 137MB ISO image on a machine with only 256MB
RAM...
2007-01-29 04:12:29 +00:00
Michael Brown
89c3c67c51
Should be correct for building RSA
2007-01-28 19:50:43 +00:00
Michael Brown
b3b6b25aeb
Handle (64-bit) / (32-bit) = (64-bit), i.e. one step beyond that
...
provided by the divl instruction.
2007-01-28 19:34:17 +00:00
Michael Brown
bd873525ff
Add matrixssl directory
2007-01-26 04:36:50 +00:00
Michael Brown
6417a6adf0
Avoid barfing on gcc's implicit memcpy()s
2007-01-26 04:14:25 +00:00
Michael Brown
3bb7c19779
Allow MatrixSSL code to compile inside gPXE
2007-01-26 03:50:17 +00:00
Michael Brown
afe4e011ac
Move tolower() etc to ctype.h as per ISO C
2007-01-26 03:25:19 +00:00
Michael Brown
bf9ec8102f
Add 64-bit rotates
2007-01-26 02:53:30 +00:00
Michael Brown
7cdc6529bb
Build external axtls code
2007-01-26 02:03:34 +00:00
Michael Brown
9542c016cd
Add aes.c and required headers from axtls tree
2007-01-26 01:59:37 +00:00
Michael Brown
7b8859ad15
Enable the axtls code to at least build within gPXE
2007-01-26 01:55:34 +00:00
Michael Brown
7993488a68
#if 0 out for now
2007-01-26 01:42:16 +00:00
Michael Brown
f59281d8f6
Yet more synonyms that people tend to use.
2007-01-26 01:30:16 +00:00
Michael Brown
da9dc834b1
Help quick testing of building Linux code inside gPXE
2007-01-24 23:38:05 +00:00
Michael Brown
9cf5c4557d
Add Linux-compatible rol32/ror32 functions. Amazingly, gcc will
...
optimise these down to the correct single "roll"/"rorl" instruction.
2007-01-24 23:31:58 +00:00
Michael Brown
6a765fdc15
Use base "0" in strtoul for consistency with "mem="
2007-01-24 22:54:08 +00:00
Michael Brown
99cb46943f
"vga=" is specified in decimal, not hex.
2007-01-22 23:56:24 +00:00
Michael Brown
ebb00e032c
Misread the definition of the type_of_loader field; it should include a
...
version.
2007-01-19 15:40:01 +00:00
Michael Brown
92a78c8e15
Added SIGKILL handler
2007-01-19 15:19:52 +00:00
Michael Brown
13d9a660ca
Zeroing out memory before using it can be so important.
2007-01-19 14:44:59 +00:00
Michael Brown
d6909f65f0
Actually, it's probably safer *not* to leave child processes hanging
...
around which still hold pointers to variables belonging to our parent...
2007-01-19 14:20:41 +00:00
Michael Brown
b6194b8cb9
Note that the SIGCHLD handler could be re-entered.
2007-01-19 14:10:13 +00:00
Michael Brown
1411876e26
Propagate return status code from last child to fail.
2007-01-19 14:00:51 +00:00
Michael Brown
cde6d776e3
Handle structured error codes.
2007-01-19 13:52:50 +00:00
Michael Brown
18f9f939a8
Introduce structured error codes.
2007-01-19 13:15:26 +00:00
Michael Brown
c2352dc8de
Add POSIX prototypes for time functions, to allow external code to build
...
more easily within gPXE.
Note that we don't have function bodies for these functions yet.
2007-01-19 03:09:22 +00:00
Michael Brown
4256b3338a
Split random number generation out into core/random.c, and create the
...
correct prototypes for srandom(), rand() and srand().
2007-01-19 02:02:59 +00:00
Michael Brown
f4c1e564a1
vsprintf.h is gPXE-specific; move it to include/gpxe
2007-01-19 01:17:23 +00:00
Michael Brown
73b09ecba6
Use stdio.h instead of vsprintf.h
2007-01-19 01:13:12 +00:00
Michael Brown
06475f7b69
Finally move the prototypes for printf() and friends to stdio.h
2007-01-19 00:58:49 +00:00
Michael Brown
1a0ca661c2
4.3BSD says that bcopy and bzero are defined in strings.h, not string.h
2007-01-19 00:51:13 +00:00
Michael Brown
a213876382
Typo
2007-01-19 00:48:13 +00:00
Michael Brown
b02a564297
Add missing prerequisite include
2007-01-19 00:39:12 +00:00
Michael Brown
4e3976711d
A working name resolution framework
2007-01-18 22:38:13 +00:00
Michael Brown
8bb9f726a0
When an async operation dies, orphan its children.
2007-01-18 22:36:57 +00:00
Michael Brown
075f8144ff
Have DHCP set the nameserver, rather than DNS read the DHCP nameserver
...
value.
2007-01-18 21:22:03 +00:00
Michael Brown
c014f607a8
Use total free memory as advertised window. This seems to be sufficient
...
to avoid drops even on slow NICs.
2007-01-18 20:39:17 +00:00
Michael Brown
6d4e37cf42
Move include/malloc.h to include/gpxe/malloc.h, since everything in there
...
is now gPXE-specific. (The standard malloc() et al have been in stdlib.h
for a while).
Add free memory counter.
2007-01-18 20:11:04 +00:00
Michael Brown
5ff23aa406
Include stdlib.h rather than malloc.h
2007-01-18 20:06:03 +00:00
Michael Brown
d12770e254
console.h is no longer needed for debugging
2007-01-18 19:13:25 +00:00
Michael Brown
37f1b12587
Allow truly arbitrary debug levels to be specified via DEBUG=
2007-01-18 19:00:09 +00:00
Michael Brown
5d57cd47a2
Declaring the CPU architecture in the middle of an assembly file is
...
somewhat redundant, and also causes gas to complain when we include
the profiling code (which uses an i586 instruction).
2007-01-18 18:53:32 +00:00
Michael Brown
f781a98ac4
Add DBGLVL_PROFILE
2007-01-18 17:59:59 +00:00
Michael Brown
05f4c3d176
Remove the one-packet-per-poll-cycle limit; it seems to no longer be
...
needed now that performance is up.
2007-01-18 16:50:35 +00:00
Michael Brown
5b00fbade3
Increase window size to 64kB. Line rate downloads on a 100Mbps link,
...
anyone?
2007-01-18 16:39:55 +00:00
Michael Brown
bd95927386
Accelerate memcpy() by around 32% on large, dword-aligned copies.
2007-01-18 15:18:02 +00:00
Michael Brown
c8b3e969a0
Allow buffers to be pre-expanded on demand.
2007-01-18 15:13:41 +00:00
Michael Brown
6c72bf13a1
Presize the download buffer when we see the Content-Length header;
...
this saves around 70us per received packet (which is around 50% of the
overall packet processing time).
2007-01-18 13:26:57 +00:00
Michael Brown
08da93a311
Reorder functions to more closely reflect the flow of control
2007-01-18 13:10:26 +00:00
Michael Brown
35776f481c
Don't always zero memory in malloc(). This saves around 2us on a
...
full-length PKB allocation.
2007-01-18 12:54:18 +00:00
Michael Brown
06630a3036
Switch from calloc() to malloc()+memset() to match the practices used
...
almost everywhere else.
2007-01-18 12:45:58 +00:00
Michael Brown
48fe701716
Respect the RX quota. This improves poll time by about 0.7us when the
...
quota is 1.
2007-01-18 12:34:12 +00:00
Michael Brown
dd6d94004f
HTTP/DNS now working fully asynchronously. HTTP/IP addresses and any
...
other protocol won't work at the moment.
2007-01-18 03:39:45 +00:00
Michael Brown
0b11733b75
Replacement for fetch() which operates asynchronously and identifies
...
protocols by URI scheme.
2007-01-18 03:37:05 +00:00
Michael Brown
99e58865c7
Use struct sockaddr rather than struct sockaddr_tcpip
...
Tidy up code
2007-01-18 03:35:00 +00:00
Michael Brown
6601a7da6a
Added async_uninit() to simplify failure paths.
2007-01-18 03:29:40 +00:00
Michael Brown
5a807994d8
Add utility function to parse port from URI
2007-01-18 03:28:55 +00:00
Michael Brown
8ffbbebf11
Ensure that struct sockaddr is long enough...
2007-01-18 03:28:29 +00:00
Michael Brown
9828181e3b
Obsolete
2007-01-18 01:05:09 +00:00
Michael Brown
544fa25928
Rename e{malloc,realloc,free} to u{malloc,realloc,free}, to more obviously
...
reflect the fact that they allocate and deallocate user memory (i.e.
things reached through a userptr_t).
2007-01-16 08:36:42 +00:00
Michael Brown
ff8528ea9a
Create and use async_block() macro; it cuts down on the visual overhead
...
of blocking on asynchronous operations, when that isn't an important
aspect of the code.
2007-01-16 08:10:54 +00:00
Michael Brown
f11da20f25
When a network device is specified to tcpip_tx() or it's children, treat
...
it as a fallback network device rather than an explicitly forced network
device.
Clear routing table entries before re-attempting DHCP.
2007-01-16 04:09:13 +00:00
Michael Brown
1a1fc23417
Improve debugging
2007-01-16 03:29:15 +00:00
Michael Brown
bcdb6fad3e
Improve debug messages
2007-01-16 03:19:40 +00:00
Michael Brown
835d35749f
Improved debugging
2007-01-16 03:10:37 +00:00
Michael Brown
143d14614d
Quickly hack in DNS resolution as a proof of concept
2007-01-15 17:32:52 +00:00
Michael Brown
9af12d5fba
A working DNS resolver (not yet tied in to anything)
2007-01-15 17:31:35 +00:00
Michael Brown
df0397f334
Update TFTP and FTP to take the same temporary URI scheme as HTTP
2007-01-15 09:58:26 +00:00
Michael Brown
afa752f5fb
Protocol's get() method no longer takes ownership of the URI. HTTP is the
...
exception rather than the rule; we may as well keep things clean for other
protocols.
2007-01-15 09:18:06 +00:00
Michael Brown
1f92c6b3e8
Must free http on the error path; nothing else will do it
2007-01-15 09:08:40 +00:00
Michael Brown
c676591cd1
Unmaintained example code is probably worse than useless.
2007-01-15 09:06:12 +00:00
Michael Brown
4e20d73bb5
Gave asynchronous operations approximate POSIX signal semantics. This
...
will enable us to cascade async operations, which is necessary in order to
properly support DNS. (For example, an HTTP request may have to redirect
to a new location and will have to perform a new DNS lookup, so we can't
just rely on doing the name lookup at the time of parsing the initial
URL).
Anything other than HTTP is probably broken right now; I'll fix the others
up asap.
2007-01-15 08:49:10 +00:00
Michael Brown
ec75b269d3
Add missing include
2007-01-15 08:44:05 +00:00
Michael Brown
90d859c34b
Add ETIMEDOUT
2007-01-15 02:46:56 +00:00
Michael Brown
26166cf5e0
Added a URI parser that should be standards conformant. (It can certainly
...
handle something as convoluted as
ftp://joe:secret@insecure.org:8081/hidden/path/to?what=is#this
2007-01-14 23:48:31 +00:00
Michael Brown
a5a330339b
Split DBG() statement containing two inet_ntoa() statements; they
...
return a static buffer.
2007-01-14 19:58:41 +00:00
Michael Brown
ce7289a766
Dump buffer and packet information in PXENV_UDP_READ as well
2007-01-14 18:22:37 +00:00
Michael Brown
76aa9ad07d
Make TCP give up immediately when it receives -ENETUNREACH from
...
tcpip_tx(). This avoids the irritating wait when you accidentally type
"kernel pxelinux.0" before bringing up the network interface.
Add ENETUNREACH to strerror()'s list.
2007-01-14 16:47:03 +00:00
Michael Brown
c953c1a1c3
Use -ENETUNREACH to mean "no reachable network device exists, don't bother
...
retrying".
2007-01-14 16:22:10 +00:00
Michael Brown
8edf8f6fa8
Add the "initrd" command
2007-01-14 16:09:48 +00:00
Michael Brown
a5f6408d8e
We can now load an initrd as well as a kernel
2007-01-14 16:09:01 +00:00
Michael Brown
b9f99858ab
Make the getmemsize() prototype available in memsizes.h, for code that
...
doesn't want to go to the hassle of processing a full memory map.
2007-01-14 15:32:25 +00:00
Michael Brown
c1fd6e8dc7
Once image type has been set, do not autoprobe further
2007-01-14 15:25:23 +00:00
Michael Brown
99272f958b
Typo
2007-01-14 15:13:33 +00:00
Michael Brown
10c9b03cdb
Actually, the initrd image should be architecture-independent.
2007-01-14 15:07:11 +00:00
Michael Brown
f92e04dea4
Add dummy "initrd" image format, just so that images can be marked as
...
initrds.
2007-01-14 15:03:39 +00:00
Michael Brown
7dc50167bb
Allow load() and exec() methods to be NULL.
2007-01-14 14:59:36 +00:00
Michael Brown
8a490146bf
Copy command line at execution time rather than load time.
...
Parse command line for "vga=" and "mem=" parameters
2007-01-14 14:29:30 +00:00
Michael Brown
3ccd7335f0
Split bzimage_load into separate functions
2007-01-14 13:36:33 +00:00
Michael Brown
97a3037f76
Can start a Linux kernel directly (albeit with no initrd support)
2007-01-14 12:34:35 +00:00
Michael Brown
3cbf0db0a3
Remove some references to no-longer-existent source files.
...
Add a path for isolinux.bin that is correct on my system; hopefully it
will work on others too.
2007-01-14 11:52:22 +00:00
Michael Brown
b04b0ddc31
.lilo and derived targets (e.g. .iso) now load properly.
2007-01-14 11:50:44 +00:00
Michael Brown
77d280968a
Obsoleted by arch/i386/image/multiboot.c
2007-01-14 11:45:28 +00:00
Michael Brown
784e10635a
Can almost start a kernel now. It dies with "No setup signature found"
2007-01-14 06:36:20 +00:00
Michael Brown
698bbe0155
Obsolete
2007-01-14 04:28:42 +00:00
Michael Brown
b07161f397
Placeholder bzImage support
2007-01-14 04:27:25 +00:00
Michael Brown
797edf28b7
Replace image->entry with image->priv.
2007-01-14 04:04:28 +00:00
Michael Brown
3bdbfe1f00
Mostly updated. Won't work yet.
2007-01-14 03:49:07 +00:00
Michael Brown
644f3674e6
Obsolete for some time
2007-01-14 02:24:41 +00:00
Michael Brown
6dcb182aee
Fill in BufferSize in PXENV_GET_CACHED_INFO
2007-01-14 02:21:02 +00:00
Michael Brown
7bc03d37a2
Select a PXE network device before starting PXE NBP.
...
Move pxe_boot() code to pxe_image.c
2007-01-14 02:20:10 +00:00
Michael Brown
98240d99f0
Do not go past the end of the argv[] array.
...
This bug found by setting read and write watchpoints at NULL in bochs.
2007-01-14 02:01:26 +00:00
Michael Brown
55e6d7b70c
Use debug autocolourisation.
...
Shut down before jumping to the multiboot image.
2007-01-14 00:57:43 +00:00
Michael Brown
dca369ddc3
Call hide_etherboot() from startup(), rather than requiring the prefix to
...
do it.
2007-01-14 00:53:56 +00:00
Michael Brown
c2708df14a
Make shutdown functions callable by OS image's exec methods.
2007-01-14 00:16:41 +00:00
Michael Brown
c088ecf042
Make "boot" a synonym for "imgexec", to match grub
2007-01-14 00:08:13 +00:00
Michael Brown
beb941ed81
Rename "boot" to "autoboot"
2007-01-14 00:06:23 +00:00
Michael Brown
ece4ff929e
Use _text, rather than assuming _text==0.
2007-01-14 00:03:07 +00:00
Michael Brown
f547f148d3
Use {get,set}_fbms() so that allocated base memory is correctly hidden.
2007-01-14 00:01:16 +00:00
Michael Brown
0b0e34e667
Provide {get,set}_fbms() in basemem.h.
...
set_fbms() will also update the E820 hidden region.
2007-01-13 23:57:31 +00:00
Michael Brown
aaed3d50a8
Some operating systems get a nasty shock if a region of the E820 map seems
...
to start on a non-page boundary. Make life safer by rounding out our
edited regions.
2007-01-13 23:38:33 +00:00
Michael Brown
d0f4e9a54b
Add some trace messages for important events
2007-01-13 17:54:41 +00:00
Michael Brown
526d314266
Advertise a larger MSS to improve TCP performance.
2007-01-13 17:36:17 +00:00
Michael Brown
f11900a9c6
I prefer IMAGE_XXX to XXX_IMAGE.
...
Add IMAGE_PXE to use the new image format framework. "kernel pxelinux.0"
now works.
2007-01-13 17:28:51 +00:00
Michael Brown
bd863e4112
Add header for pxe_boot()
2007-01-13 17:23:44 +00:00
Michael Brown
4b77061881
Pick up the return status code from the correct place now that we
...
don't overwrite the parameter block until *after* the debug code.
2007-01-13 16:55:57 +00:00
Michael Brown
5817c9f114
When an UNDI API call fails, print everything there is to know about it.
2007-01-13 16:53:55 +00:00
Michael Brown
3b77c7aa1b
Hex dumps are now integrated into the DBG() framework.
2007-01-13 16:49:38 +00:00
Michael Brown
6a3c76c8e0
Always send EOI. We can't feasibly share interrupts (since we have no
...
clue what the "previous" interrupt handler will do, which could range
from "just an iret" to "disable the interrupt"), and that means that
we have to take responsibility for ACKing all interrupts. Joy.
2007-01-13 14:45:26 +00:00
Michael Brown
86171c53f4
Damn Broadcom and their damned incorrect assumptions about x86 memory
...
allocation.
2007-01-13 01:48:12 +00:00
Michael Brown
341c0b9cfb
Add HTTP test support
2007-01-12 19:19:59 +00:00
Michael Brown
497c3a5aad
Fixed HTTP
2007-01-12 19:18:13 +00:00
Michael Brown
369754f959
Whitespace fix
2007-01-12 19:17:25 +00:00
Michael Brown
63386f4455
Added ENOENT, since HTTP 404 translates to it
2007-01-12 19:14:01 +00:00
Michael Brown
ca3db0bf11
Added isspace() and made strtoul() accept whitespace, as per POSIX.
2007-01-12 19:11:28 +00:00
Michael Brown
83b7933f8a
Damn it; my lovely resilient scheme falls down when you have a protocol
...
that switches from line-oriented to byte-oriented partway through, such as
HTTP.
2007-01-12 18:09:14 +00:00
Michael Brown
ad22cccc09
No need to maintain a received byte count; we always fill in sequential
...
order so we can just use buffer->fill.
2007-01-12 17:16:46 +00:00
Michael Brown
996b091b50
Added generic line-buffering code (a la stdio)
2007-01-12 17:08:37 +00:00
Michael Brown
bcd6ca3291
Place multiboot tables in base memory; at least some OSes won't see it
...
if we don't.
2007-01-12 16:25:05 +00:00
Michael Brown
5c72d9c4e0
Print image physical location in registration message.
2007-01-12 16:20:51 +00:00
Michael Brown
0f29e0e46e
Ensure multiboot modules are in ascending order of memory start
...
address, to work around OS bugs.
2007-01-12 12:03:19 +00:00
Michael Brown
53e948bba8
Fix the memory map.
2007-01-12 11:38:04 +00:00
Michael Brown
112d7f9d79
Code used for load buffer and multiboot image testing
2007-01-12 10:12:11 +00:00
Michael Brown
49fc8dcdc3
Use dhcp(), imgfetch() etc. to boot rather than dhcp_test().
2007-01-12 10:08:27 +00:00
Michael Brown
b45a9bfa2d
Added missing declaration.
2007-01-12 10:07:56 +00:00
Michael Brown
a6afbe762c
Make DEBUG=script echo the commands as they are executed
2007-01-12 10:06:59 +00:00
Michael Brown
9952df9b52
Add "dhcp" command
2007-01-12 09:53:28 +00:00
Michael Brown
e2c0055e23
Let ifmgmt.c take care of calling efree(), since it's the once which
...
took out the contract to eventually call efree() when it called fetch().
Maintain the most recently loaded image at the start of the list, so that
imgautoselect() will pick it.
2007-01-12 09:46:10 +00:00
Michael Brown
39ede8c7e8
Added dhcp() user-level command.
2007-01-12 09:20:11 +00:00
Michael Brown
67aedf34fa
Use systematic names for XXX_IMAGE.
...
Add scripts as an image format (since it's trivial to do).
2007-01-12 09:00:48 +00:00
Michael Brown
83559c668a
Don't print "<NULL>" when we use imgautoselect().
2007-01-12 08:59:25 +00:00
Michael Brown
2be2f3b205
Rearrange struct image to reflect usage of the fields
2007-01-12 08:58:16 +00:00
Michael Brown
eba3609e7f
Add debug message
2007-01-12 08:57:51 +00:00
Michael Brown
5162f30028
Ignore comment lines.
...
Avoid returning errors for comments and empty lines.
2007-01-12 08:56:48 +00:00
Michael Brown
48e0fc3447
API change: the raw image will no longer be (hypothetically) discarded
...
after a call to load().
2007-01-12 08:15:25 +00:00
Michael Brown
6fdc6c81a6
Force probing of multiboot before ELF.
2007-01-12 08:10:35 +00:00
Michael Brown
475d6d1f7c
fetch() now knows nothing about struct image; it simply loads a file and
...
returns the allocated buffer.
2007-01-12 08:02:27 +00:00
Michael Brown
2876197306
Allow "imgexec" with no arguments to boot the file that was loaded with
...
"kernel".
2007-01-12 07:32:46 +00:00
Michael Brown
f135a37f30
Cleaner separation between imgXXX() functions and image_cmd.c
2007-01-12 07:22:20 +00:00
Michael Brown
742f242863
Add free_image
2007-01-12 06:26:59 +00:00
Michael Brown
9817f93094
Add basic "fetch" and "imgstat" commands.
2007-01-12 06:05:27 +00:00
Michael Brown
b9fea9cbac
Added IMAGE_LOADED flag and find_image()
2007-01-12 06:03:02 +00:00
Michael Brown
8b6eaf3c82
Be silent if there are no network interfaces
2007-01-12 05:48:22 +00:00
Michael Brown
e96041872e
Added missing declaration.
2007-01-12 05:27:02 +00:00
Michael Brown
9debfed07a
Place command-line inline, to save on memory allocation hassles.
2007-01-12 05:26:19 +00:00
Michael Brown
f15482d85f
Added basename() to make automatically naming images easier.
2007-01-12 05:24:51 +00:00
Michael Brown
29dadc5ec6
Build automatically expanding buffers from struct buffer and erealloc().
2007-01-12 03:51:04 +00:00
Michael Brown
77b7640af4
Fix the only bug (which was to use DBGC() in place of DBG()!) and add 4kB
...
alignment.
2007-01-12 03:28:03 +00:00
Michael Brown
132a8fe49d
Quick and dirty test for emalloc()
2007-01-12 03:27:05 +00:00
Michael Brown
45ec9c907e
First version of an external memory allocator (not tested)
2007-01-12 03:15:29 +00:00
Michael Brown
1d313234b3
Rename copy_user() to memcpy_user(). Add memmove_user() and
...
userptr_add().
2007-01-12 03:14:15 +00:00
Michael Brown
859da6bd32
Allow external code to update hidden memory regions.
2007-01-12 03:13:04 +00:00
Michael Brown
687c1e3227
Nothing (not even hidemem.c) uses this file!
2007-01-12 02:45:46 +00:00
Michael Brown
39a8ed827c
Long since obsoleted by arch/i386/scripts/i386.lds
2007-01-12 02:43:10 +00:00
Michael Brown
2e088d9afc
Obsoleted by arch/i386/interface/pxe/pxe_call.c
2007-01-12 02:42:14 +00:00
Michael Brown
f81bf3bc52
We *do* have a __data16_array after all!
2007-01-12 02:37:47 +00:00
Michael Brown
2c66588f3e
Add UNULL
2007-01-12 01:40:12 +00:00
Michael Brown
6c894c2a2e
Fix typo
2007-01-12 01:37:38 +00:00
Michael Brown
e4c6418ac0
We may be required to page-align modules, so let's make sure we catch
...
it if we don't.
2007-01-12 00:09:16 +00:00
Michael Brown
7bf94b5ad6
Allow for named images.
2007-01-11 23:45:18 +00:00
Michael Brown
f59ad50504
Provide registration mechanism for loaded images, so that we can e.g.
...
refer to them by name from the command line, or build them into a
multiboot module list.
Use setting image->type to disambiguate between "not my image" and "bad
image"; this avoids relying on specific values of the error code.
2007-01-11 23:43:29 +00:00
Michael Brown
79a399c05a
alloca() can be useful in some (limited) circumstances.
2007-01-11 23:19:31 +00:00
Michael Brown
f31d91bce5
Populate multiboot information structure before calling OS.
2007-01-11 21:21:02 +00:00
Michael Brown
ddbc60b5ae
Whoever put together the grub multiboot.h header is insane.
2007-01-11 21:20:27 +00:00
Michael Brown
c468c68661
Add command line that can be passed to executed images.
2007-01-11 21:19:29 +00:00
Michael Brown
200d92c76d
Avoid namespace clashes
2007-01-11 19:42:26 +00:00
Michael Brown
bcc98c78b8
Added fields present in the documentation but not in the header file.
2007-01-11 19:41:13 +00:00
Michael Brown
dc51af59a4
Capable of starting a multiboot kernel (albeit without the multiboot
...
information table yet).
2007-01-11 18:41:15 +00:00
Michael Brown
9196e9069c
Add PHYS_CODE, for use as in __asm__ ( PHYS_CODE ( ... ) ), comparable
...
to the REAL_CODE interface.
2007-01-11 18:40:46 +00:00
Michael Brown
d488a172eb
Capable of loading a multiboot image into memory
2007-01-11 17:44:42 +00:00
Michael Brown
7cf4a72389
Add placeholder elf_execute()
2007-01-11 17:44:07 +00:00
Michael Brown
819cd3f41c
Limit -ENOEXEC to mean "this is not in my format".
2007-01-11 17:06:25 +00:00
Michael Brown
6a03552381
Distinguish between ENOMEM (as representing a lack of internal memory
...
as allocated by malloc()) versus all other errors, in particular
ENOBUFS (representing a lack of external buffer space, e.g. in a
device's TX queue or a user buffer).
2007-01-11 16:30:21 +00:00
Michael Brown
143e3b84a4
Downloaded from current grub CVS.
2007-01-11 16:22:03 +00:00
Michael Brown
c810baad37
Use generic "struct image" rather than "struct elf".
2007-01-11 16:10:32 +00:00
Michael Brown
c6c63d954d
Rename "image" field to "data", because "image->image" is just confusing.
2007-01-11 16:07:30 +00:00
Michael Brown
4fc9333159
Move include/image.h to include/gpxe/image.h
2007-01-11 16:04:36 +00:00
Michael Brown
d84ec0e5d5
Had this file lying around for ages; may as well check it in.
2007-01-11 15:31:50 +00:00
Michael Brown
91ac92bc86
Try image as ELF file first. (Don't yet actually try to execute it).
2007-01-11 15:27:06 +00:00
Michael Brown
3460860bef
Print informative error message when boot fails.
2007-01-11 15:26:17 +00:00
Michael Brown
230f16538f
Create include/gpxe/elf.h for the ELF bits that aren't part of the ELF
...
standard and so don't belong in include/elf.h
2007-01-11 15:25:07 +00:00
Michael Brown
0010e10ef3
Update TFTP to use a struct buffer rather than a callback.
...
Add debug autocolourisation to TFTP.
2007-01-11 15:14:54 +00:00
Michael Brown
d9204ef676
Use physical address in debug messages; they make more sense to read.
2007-01-11 15:08:58 +00:00
Michael Brown
7ad1c2eaa8
Removed the Etherboot-specific ELF-image code and replaced it with a
...
generic ELF loader, to be used by the multiboot code.
2007-01-11 14:44:03 +00:00
Michael Brown
10980c12ee
Add image directory back in
2007-01-11 14:43:15 +00:00
Michael Brown
3634e705b7
Remove osloader.c and replace with a prep_segment() that uses userptr_t
...
and get_memmap() in image/segment.c
2007-01-11 14:32:26 +00:00
Michael Brown
ceca6b185c
Added user_to_phys() and memset_user().
2007-01-11 14:27:27 +00:00
Michael Brown
c980cdd0aa
Move memmap.h out of arch/i386; it no longer contains anything
...
architecture-dependent and is needed by the ELF code.
2007-01-11 14:08:44 +00:00
Michael Brown
c6a4055fae
Add phys_to_user() and copy_user().
2007-01-11 14:01:20 +00:00
Michael Brown
fbfed96965
buffer.c should be using copy_{to,from}_user, rather than
...
copy_{to,from}_phys.
2007-01-11 05:42:06 +00:00
Michael Brown
037da9d840
I hate NULL pointer dereferences.
2007-01-11 05:27:02 +00:00
Michael Brown
03390f0cd6
Use pkb_pad() rather than doing it the dangerous way :)
2007-01-11 05:26:16 +00:00
Michael Brown
a3ed0cbbc7
Extract packet-padding login from rtl8139.c to a separate pkbpad.c file.
2007-01-11 05:25:50 +00:00
Michael Brown
6918cf9e9e
Change FTP to use a data buffer rather than a callback function.
2007-01-11 04:51:20 +00:00
Michael Brown
c0ef730ec4
Fix bug in buffer.c, add buffer mini-unit test.
2007-01-11 04:46:41 +00:00
Michael Brown
83fa318b86
Added strerror(0)=="No error", so that TCP protocols can use
...
strerror(rc) in their closed() methods without producing "Error
0x0000" when the connection is closed normally.
2007-01-11 04:01:31 +00:00
Michael Brown
e2dcd05b67
Update buffer-handling code to enable expandable buffers.
2007-01-11 03:50:47 +00:00
Michael Brown
bb2024c6d6
Move include/buffer.h to include/gpxe/buffer.h
2007-01-11 01:47:26 +00:00
Michael Brown
de042993c0
Warn when net device on an active route is not open.
2007-01-10 20:58:36 +00:00
Michael Brown
d45c5e7ce7
Add "route" command (which currently only displays the routing table; it
...
can't modify it).
2007-01-10 20:51:14 +00:00
Michael Brown
d9ba8f790b
Add route() function to display routing table.
2007-01-10 20:38:20 +00:00
Michael Brown
78ded6604a
Try booting from the "boot" network device first (i.e. the one which we
...
were loaded from). The code to identify this device isn't present yet,
but the code to act upon the knowledge is.
2007-01-10 20:21:42 +00:00
Michael Brown
1fa5cd0e2b
Add find_pci_netdev()
2007-01-10 16:16:05 +00:00
Michael Brown
fdc97499bf
Add device description fields to struct device.
2007-01-10 15:27:48 +00:00
Michael Brown
489a4004d7
Give UNDI device a more meaningful name.
2007-01-10 05:52:04 +00:00
Michael Brown
f396f1f9d3
Force ordering of commands within help list.
2007-01-10 05:13:20 +00:00
Michael Brown
cef551376f
Force ordering of commands in help list.
2007-01-10 05:10:30 +00:00
Michael Brown
77bb7b13a7
Having forced __table() to natural structure alignment, it now seems
...
that we *can* place arrays in tables, which means we can force the
order within a table without having to resort to explicitly numbered
sections on everything.
2007-01-10 05:08:05 +00:00
Michael Brown
dad5274522
Add "name" field to struct device to allow human-readable hardware device
...
names.
Add "dev" pointer in struct net_device to tie network interfaces back to a
hardware device.
Force natural alignment of data types in __table() macros. This seems to
prevent gcc from taking the unilateral decision to occasionally increase
their alignment (which screws up the table packing).
2007-01-10 04:22:09 +00:00
Michael Brown
cc9b32c405
Remove uIP; we haven't used it for quite some time now.
2007-01-10 02:52:58 +00:00
Michael Brown
753e156844
Allow udp_{send,sendto,sendto_via} to be called outside of the
...
udp_senddata() callback. This will simplify any UDP protocols that don't
need the temporary buffer.
2007-01-10 02:46:39 +00:00
Michael Brown
649b789e93
DHCP transmits via specified net device, so no need to create a dummy
...
routing table entry just to fool ipv4.c any more.
2007-01-10 02:37:23 +00:00
Michael Brown
c821a7b20d
Add udp_sendto_via() to allow e.g. DHCP to transmit without first having
...
to set up dummy routing entries.
2007-01-10 02:31:38 +00:00
Michael Brown
f008b77ba2
Allow an explicit network device to be specified for IP-layer
...
transmissions.
2007-01-10 02:25:11 +00:00
Michael Brown
9869659895
Add interface management commands
2007-01-10 02:04:07 +00:00
Michael Brown
55e590ab3a
Move header file for usr/autoboot.c to include/usr
2007-01-10 02:03:20 +00:00
Michael Brown
d24b80acf2
Added network interface management commands
2007-01-10 01:55:07 +00:00
Michael Brown
98b6154c3e
Add "name" field to network device, to facilitate netdev commands.
2007-01-09 23:48:18 +00:00
Michael Brown
c65fae2475
Add RX quotas to the net device poll() method. This avoids the problem
...
of alloc_pkb() exhaustion when e.g. an iSCSI-booted DOS session is left
idle for a long time at the C:\ prompt and builds up a huge packet
backlog.
2007-01-09 21:47:01 +00:00
Michael Brown
e822bc2a90
Autopadding was sometimes overwriting the struct list_head at the end
...
of the packet buffer. Although pkbuffs are guaranteed to be at least
PKB_ZLEN bytes long, there's no guarantee that the data starts at the
start of the packet buffer.
Since we have to align data for rtl8139 anyway, and since the start of
the packet buffer is guaranteed to be aligned to PKB_ALIGN, we may as
well just shuffle the packet down so that it starts at the start of
the packet buffer. This simultaneously aligns the packet and ensures
that there is enough room for the zero-padding.
2007-01-09 21:01:55 +00:00
Michael Brown
18e5353bed
Rename pkb_available() to pkb_tailroom() for consistency with Linux's
...
skb_tailroom(). Add pkb_headroom().
2007-01-09 20:56:31 +00:00
Michael Brown
b7fcfe8ece
Added net device TX queue; this will be needed to support the PXE UNDI API
...
(which will need us to wait for TX completions).
Added debug autocolourisation to netdevice.c
2007-01-09 20:18:31 +00:00
Michael Brown
8a268073a7
Move start/stop/expire debug messages to DBG2() level.
2007-01-09 17:39:52 +00:00
Michael Brown
3c2cc59d25
Added ability to break ISR processing over several calls to poll().
...
This will allow us to implement RX quotas.
2007-01-09 17:04:10 +00:00
Michael Brown
aa7bda7b47
Send EOI after enabling interrupt, in case the device had asserted IRQ
...
to the PIC while it was disabled.
2007-01-09 14:53:19 +00:00
Michael Brown
a2ffe8c123
Allow boot sector to completely destroy real-mode stack, but still
...
manage to return control.
2007-01-09 14:13:59 +00:00
Michael Brown
a9369bb503
Leave protected-mode return address on PM stack when issuing a
...
real_call(), rather than moving it to the RM stack and back again.
This allows the real-mode function to completely destroy the stack
contents, provided that it manages to return to real_call().
2007-01-09 14:13:06 +00:00
Michael Brown
2eeb7c4fe7
Define "connected" as
...
"when SYN is ACKed and we have already received SYN", or
"when SYN is received and we have already had SYN ACKed"
rather than just
"when SYN is ACKed"
This avoids spuriously calling the connected() method when we receive
a RST,ACK in response to a SYN.
2007-01-09 05:01:22 +00:00
Michael Brown
70cc3a164a
Reset character attributes before start of welcome banner, in case
...
it's a serial console and remembers state from the previous program
run.
2007-01-09 04:51:27 +00:00
Michael Brown
aaca21a2b6
We can't assert that the RX engine is idle in iscsi_done(), because it
...
may be called during the RX data processor, before the RX engine
transitions back to idle. It doesn't really matter if the RX engine
isn't idle when iscsi_done() is called, because it will just pick up
where it left off on the next call. (The same is not true for the TX
engine, so keep the TX engine assertion.)
2007-01-09 04:42:23 +00:00
Michael Brown
6ea07b9247
Use debug auto-colourisation.
2007-01-09 04:38:39 +00:00
Michael Brown
76525294ee
Clean up connection closing and permanent failure logic.
2007-01-09 04:31:33 +00:00
Michael Brown
2738bdf74b
Obsoleted by drivers/net/undionly.c
2007-01-09 03:22:11 +00:00
Michael Brown
d606edb41d
Added UNDI root bus driver (which saves including all the PCI bus code,
...
UNDI ROM code etc. when you just want a "undi.kpxe"-type image).
This driver cannot be used in conjunction with any other driver (it will
crash), or in any other format than .kpxe (it just won't find any network
devices).
2007-01-09 03:20:22 +00:00
Michael Brown
159930862f
Added missing call to undinet_remove()
2007-01-09 03:08:01 +00:00
Michael Brown
6b09dd8244
undipci_probe() has to calculate busdevfn anyway, so we may as well pass
...
it directly to undi_load_pci().
2007-01-09 02:58:07 +00:00
Michael Brown
ed44e3730d
Avoid erasing non-existent signatures in undi_unload()
2007-01-09 02:53:24 +00:00
Michael Brown
a2be828a33
Avoid leaving preloaded_undi with invalid PXENV+/!PXE structure
...
addresses if the signature checks fail.
2007-01-09 02:52:28 +00:00
Michael Brown
697bcc9d24
Since we now always unload the base code stack (even if we keep UNDI),
...
we can never return to the PXE stack and must always use INT 18.
2007-01-09 02:46:58 +00:00
Michael Brown
f2f492a536
If preloaded device matches, use that rather than going via the UNDI
...
loader.
2007-01-09 02:32:06 +00:00
Michael Brown
2436dac281
Populate preloaded_undi device when applicable.
2007-01-09 02:29:54 +00:00
Michael Brown
937289cdc8
Provide storage for an undi_device structure representing the preloaded
...
UNDI stack.
2007-01-09 02:29:18 +00:00
Michael Brown
47222d5ed8
Call PXENV_UNDI_GET_NIC_TYPE to identify NIC physical device.
...
Record all information required for populating a struct undi_device.
Make debugging output more human-readable.
2007-01-09 01:42:28 +00:00
Michael Brown
cea2221737
Use fixed-width fields in struct undi_device, so that pxeprefix.S will be
...
able to populate the structure.
2007-01-09 01:41:26 +00:00
Michael Brown
fbdebac5f4
Copy pxelinux's shutdown sequence: use UNLOAD_STACK without STOP_BASE,
...
and call UNDI_SHUTDOWN first to make sure the NIC is in a safe state.
2007-01-08 05:06:26 +00:00
Michael Brown
8f8af10b22
New strategy: always stop both base code and UNDI. Always free base code
...
memory (unless we get an error while stopping the base code). Leave UNDI
resident (though stopped) for .kpxe.
Still need to add code to record the device identification parameters
prior to stopping UNDI.
2007-01-08 03:48:26 +00:00
Michael Brown
075d79f6d4
Checking in obsolete but working memory-scanning code just for the record
2007-01-08 03:45:00 +00:00
Michael Brown
67e824b539
Neaten up debug messages
2007-01-08 03:42:19 +00:00
Michael Brown
f08093b0d9
Remove spurious debug message
2007-01-08 03:37:32 +00:00
Michael Brown
f0edd11c7d
Now split out into undirom.c and undiload.c
2007-01-08 03:35:51 +00:00
Michael Brown
07e5d4e3dc
Added any-PCI-device UNDI driver
2007-01-08 03:34:47 +00:00
Michael Brown
66f7bcc785
Tidied up debug messages
2007-01-08 03:34:06 +00:00
Michael Brown
79c5f0ba04
Added PCI_BASE_CLASS() macro
2007-01-08 03:32:41 +00:00
Michael Brown
5af4918356
Added support for wildcard device/vendor ID matches
2007-01-08 03:23:38 +00:00
Michael Brown
20c9fc407e
Remove types and prototypes now provided in the undi*.h headers.
2007-01-08 03:05:34 +00:00
Michael Brown
a6ba48e51e
Added debugging statements
2007-01-08 03:04:54 +00:00
Michael Brown
239965ff3b
Added missing includes
2007-01-08 03:03:42 +00:00
Michael Brown
6115356859
Added missing declarations
2007-01-08 02:51:27 +00:00
Michael Brown
aff96c13d2
Added missing include
2007-01-08 02:51:04 +00:00
Michael Brown
afc01a1a7f
Split UNDI load/unload out into undiload.c.
2007-01-08 02:48:17 +00:00
Michael Brown
359c888aec
Remove obsolete includes
2007-01-08 02:39:56 +00:00
Michael Brown
6fc75f659b
Separated out UNDI ROM location code into undirom.c, and use struct
...
undi_rom rather than struct pxe_driver. (This is part of the naming
consistency fixes).
2007-01-08 02:38:10 +00:00
Michael Brown
675fe200e5
Use "struct undi_device" instead of "struct pxe_device", and use the
...
function prefix "undinet_" and the variable name "undinic" in undinet.c,
so that we can reserve the variable name "undi" for a struct undi_device.
The idea is that we preserve the Etherboot 5.4 convention that the "UNDI"
code refers to our using an underlying UNDI stack, while the "PXE" code
refers to our providing a PXE API.
2007-01-08 02:24:53 +00:00
Michael Brown
36c1e1aa57
Renamed undi.c to undinet.c. (undi.c will become the UNDI PCI driver)
2007-01-08 02:02:07 +00:00
Michael Brown
234d81728a
Obsolete
2007-01-08 02:00:55 +00:00
Michael Brown
7b9617f5df
Add device to hierarchy before calling the driver's probe() function; this
...
way everything remains consistent if the probe() ends up creating child
devices.
2007-01-08 01:29:51 +00:00
Michael Brown
d3558fdd3a
Remove accidentally checked-in code
2007-01-07 19:05:28 +00:00
Michael Brown
85a41b25fe
Move START_UNDI, UNDI_STARTUP, UNDI_INITIALIZE and
...
UNDI_GET_INFORMATION calls into drivers/net/undi.c. undi_probe() now
gets given a pxe_device representing a PXE stack that has been loaded
into memory but not initialised in any way.
2007-01-07 19:02:17 +00:00
Michael Brown
23cb837951
Remember to enable/disable the interrupt at the PIC.
...
Handle failures in undi_open() properly.
2007-01-07 13:31:39 +00:00
Michael Brown
9ab5c0dde7
Remove redundant debug message
2007-01-05 16:15:50 +00:00
Michael Brown
fa9055197d
UNDI loader routine now works
2007-01-05 16:11:05 +00:00
Michael Brown
477a70697a
Added PnP BIOS scanning code, separated out from the UNDI driver
2007-01-05 16:10:03 +00:00
Marty Connor
7dee2556f4
Fixed typo
2007-01-05 16:09:47 +00:00
Michael Brown
d0a3cc3417
Avoid creating implicit memcpy()s
2007-01-05 14:48:20 +00:00
Michael Brown
9780fef360
Partial implementation of UNDI loader caller.
2007-01-05 03:24:39 +00:00
Michael Brown
0638945c7e
Add PXE driver-scanning code, capable of locating all PXE ROMs in a system
...
and matching them up to (e.g. PCI) devices.
2007-01-05 01:52:06 +00:00