summaryrefslogtreecommitdiffstats
path: root/src/image/segment.c
diff options
context:
space:
mode:
authorMichael Brown2009-03-31 05:38:48 +0200
committerMichael Brown2009-03-31 05:38:48 +0200
commitf7d2168c8eb23108e159a03416966b0f3c983320 (patch)
tree8d6dff5af83cfa23b5786a10e696d36c6088cc68 /src/image/segment.c
parent[resolv] Simplify xfer_redirect() logic (diff)
downloadipxe-f7d2168c8eb23108e159a03416966b0f3c983320.tar.gz
ipxe-f7d2168c8eb23108e159a03416966b0f3c983320.tar.xz
ipxe-f7d2168c8eb23108e159a03416966b0f3c983320.zip
[segment] Add "Requested memory not available" error message
prep_segment() can sometimes fail because an image requests memory that is already in use by gPXE. This will happen if e.g. undionly.kpxe is used to boot memtest86; the memtest86 image is an old-format kernel that needs to be loaded at 9000:0000, but this area of memory may well already be in use by the underlying PXE stack. Add a human-friendly error message, so that the cause is more immediately visible.
Diffstat (limited to 'src/image/segment.c')
-rw-r--r--src/image/segment.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/image/segment.c b/src/image/segment.c
index 9bd60f9c..3d2b8a4b 100644
--- a/src/image/segment.c
+++ b/src/image/segment.c
@@ -26,6 +26,7 @@
#include <errno.h>
#include <gpxe/uaccess.h>
#include <gpxe/memmap.h>
+#include <gpxe/errortab.h>
#include <gpxe/segment.h>
/**
@@ -72,3 +73,13 @@ int prep_segment ( userptr_t segment, size_t filesz, size_t memsz ) {
start, mid, end );
return -ERANGE;
}
+
+/**
+ * Segment-specific error messages
+ *
+ * This error happens sufficiently often to merit a user-friendly
+ * description.
+ */
+struct errortab segment_errors[] __errortab = {
+ { ERANGE, "Requested memory not available" },
+};