From f7d2168c8eb23108e159a03416966b0f3c983320 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 31 Mar 2009 04:38:48 +0100 Subject: [PATCH] [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. --- src/hci/strerror.c | 1 + src/image/segment.c | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/hci/strerror.c b/src/hci/strerror.c index 30532b39..8e7d878b 100644 --- a/src/hci/strerror.c +++ b/src/hci/strerror.c @@ -115,5 +115,6 @@ struct errortab common_errors[] __errortab = { { ENOSPC, "No space left on device" }, { ENOTSUP, "Not supported" }, { EPERM, "Operation not permitted" }, + { ERANGE, "Out of range" }, { ETIMEDOUT, "Connection timed out" }, }; 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 #include #include +#include #include /** @@ -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" }, +};