mirror of
https://github.com/xcat2/xNBA.git
synced 2024-12-24 12:11:33 +00:00
Gave up on adding POSIX errno's as required, and just added (almost) all
of them in one go. EBADIMG has been replaced by ENOEXEC, and EIMGRET by ECANCELED.
This commit is contained in:
parent
82c4afcb32
commit
d8e99bf28f
@ -95,7 +95,7 @@ static struct ebinfo loaderinfo = {
|
||||
* @v context NBI image context
|
||||
* @ret True Image is a valid NBI image
|
||||
* @ret False Image is not a valid NBI image
|
||||
* @err EBADIMG Image is not a valid NBI image
|
||||
* @err ENOEXEC Image is not a valid NBI image
|
||||
*
|
||||
* "context" is filled in with a context pointer suitable for passing to
|
||||
* nbi_load() and nbi_boot().
|
||||
@ -106,14 +106,14 @@ static int nbi_probe ( physaddr_t start, off_t len, void **context ) {
|
||||
|
||||
if ( (unsigned)len < sizeof ( imgheader ) ) {
|
||||
DBG ( "NBI image too small\n" );
|
||||
errno = EBADIMG;
|
||||
errno = ENOEXEC;
|
||||
return 0;
|
||||
}
|
||||
|
||||
copy_from_phys ( &imgheader, start, sizeof ( imgheader ) );
|
||||
|
||||
if ( imgheader.magic != NBI_MAGIC ) {
|
||||
errno = EBADIMG;
|
||||
errno = ENOEXEC;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -168,7 +168,7 @@ static int nbi_load_segment ( physaddr_t dest, off_t imglen,
|
||||
* @v process Function to call for each segment
|
||||
* @ret True All segments were processed successfully
|
||||
* @ret False An error occurred processing a segment
|
||||
* @err EBADIMG Image is not a valid NBI image
|
||||
* @err ENOEXEC Image is not a valid NBI image
|
||||
* @err other As returned by the "process" function
|
||||
*
|
||||
*/
|
||||
@ -200,7 +200,7 @@ static int nbi_process_segments ( physaddr_t start, off_t len,
|
||||
if ( sh.length == 0 ) {
|
||||
/* Avoid infinite loop? */
|
||||
DBG ( "NBI invalid segheader length 0\n" );
|
||||
errno = EBADIMG;
|
||||
errno = ENOEXEC;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -240,7 +240,7 @@ static int nbi_process_segments ( physaddr_t start, off_t len,
|
||||
sh_off += NBI_LENGTH ( sh.length );
|
||||
if ( sh_off >= NBI_HEADER_LENGTH ) {
|
||||
DBG ( "NBI header overflow\n" );
|
||||
errno = EBADIMG;
|
||||
errno = ENOEXEC;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -249,7 +249,7 @@ static int nbi_process_segments ( physaddr_t start, off_t len,
|
||||
if ( offset != len ) {
|
||||
DBG ( "NBI length mismatch (file %d, metadata %d)\n",
|
||||
len, offset );
|
||||
errno = EBADIMG;
|
||||
errno = ENOEXEC;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -264,7 +264,7 @@ static int nbi_process_segments ( physaddr_t start, off_t len,
|
||||
* @v context NBI context (as returned by nbi_probe())
|
||||
* @ret True Image loaded into memory
|
||||
* @ret False Image not loaded into memory
|
||||
* @err EBADIMG Image is not a valid NBI image
|
||||
* @err ENOEXEC Image is not a valid NBI image
|
||||
* @err other As returned by nbi_process_segments()
|
||||
* @err other As returned by nbi_prepare_segment()
|
||||
* @err other As returned by nbi_load_segment()
|
||||
@ -275,7 +275,7 @@ static int nbi_load ( physaddr_t start, off_t len, void *context ) {
|
||||
|
||||
/* If we don't have enough data give up */
|
||||
if ( len < NBI_HEADER_LENGTH ) {
|
||||
errno = EBADIMG;
|
||||
errno = ENOEXEC;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -305,7 +305,7 @@ static int nbi_load ( physaddr_t start, off_t len, void *context ) {
|
||||
* @v imgheader Image header information
|
||||
* @ret Never NBI program booted successfully
|
||||
* @ret False NBI program returned
|
||||
* @err EIMGRET NBI program returned
|
||||
* @err ECANCELED NBI program returned
|
||||
*
|
||||
*/
|
||||
static int nbi_boot16 ( struct imgheader *imgheader ) {
|
||||
@ -340,7 +340,7 @@ static int nbi_boot16 ( struct imgheader *imgheader ) {
|
||||
CLOBBER ( "eax", "ecx", "edx", "ebp" ) );
|
||||
BASEMEM_PARAMETER_DONE ( bootp_data );
|
||||
|
||||
errno = EIMGRET;
|
||||
errno = ECANCELED;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -350,11 +350,11 @@ static int nbi_boot16 ( struct imgheader *imgheader ) {
|
||||
* @v imgheader Image header information
|
||||
* @ret False NBI program should not have returned
|
||||
* @ret other As returned by NBI program
|
||||
* @err EIMGRET NBI program should not have returned
|
||||
* @err ECANCELED NBI program should not have returned
|
||||
*
|
||||
* To distinguish between the case of an NBI program returning false,
|
||||
* and an NBI program that should not have returned, check errno.
|
||||
* errno will be set to EIMGRET only if the NBI program should not
|
||||
* errno will be set to ECANCELED only if the NBI program should not
|
||||
* have returned.
|
||||
*
|
||||
*/
|
||||
@ -374,7 +374,7 @@ static int nbi_boot32 ( struct imgheader *imgheader ) {
|
||||
printf ( "Secondary program returned %d\n", rc );
|
||||
if ( ! NBI_PROGRAM_RETURNS ( imgheader->flags ) ) {
|
||||
/* We shouldn't have returned */
|
||||
errno = EIMGRET;
|
||||
errno = ECANCELED;
|
||||
rc = 0;
|
||||
}
|
||||
|
||||
@ -388,7 +388,7 @@ static int nbi_boot32 ( struct imgheader *imgheader ) {
|
||||
* @ret Never NBI program booted successfully
|
||||
* @ret False NBI program should not have returned
|
||||
* @ret other As returned by NBI program
|
||||
* @err EIMGRET NBI program should not have returned
|
||||
* @err ECANCELED NBI program should not have returned
|
||||
*
|
||||
* See also nbi_boot16() and nbi_boot32().
|
||||
*
|
||||
|
@ -111,21 +111,61 @@
|
||||
|
||||
/*
|
||||
* The range 0xd0 to 0xff is defined as "Vendor errors" by the PXE
|
||||
* spec. We place all our Etherboot-specific errors in this range.
|
||||
* We also define some generic errors as aliases to the PXE errors.
|
||||
*
|
||||
* spec. We use this space for POSIX-like errors that aren't
|
||||
* accounted for by the (somewhat implementation-specific) PXE error
|
||||
* list.
|
||||
*/
|
||||
|
||||
#define ENOERR 0x00
|
||||
#define ENOERR 0x00 /**< Operation completed successfully */
|
||||
#define EACCES 0xd0 /**< Permission denied */
|
||||
#define EADDRNOTAVAIL 0xd1 /**< Cannot assign requested address */
|
||||
#define EADDRINUSE EADDRNOTAVAIL /**< Address already in use */
|
||||
#define EAFNOSUPPORT 0xd2 /**< Address family not supported by protocol*/
|
||||
#define EAGAIN 0xd3 /**< Resource temporarily unavailable */
|
||||
#define EBUSY 0xd4 /**< Device or resource busy */
|
||||
/** Operation cancelled */
|
||||
#define ECANCELED PXENV_STATUS_BINL_CANCELED_BY_KEYSTROKE
|
||||
#define ECONNABORTED 0xd5 /**< Software caused connection abort */
|
||||
#define ECONNREFUSED 0xd6 /**< Connection refused */
|
||||
#define ECONNRESET 0xd7 /**< Connection reset by peer */
|
||||
#define EDESTADDRREQ 0xd8 /**< Destination address required */
|
||||
#define EFBIG 0xd9 /**< File too large */
|
||||
#define EHOSTUNREACH 0xda /**< No route to host */
|
||||
#define EINPROGRESS 0xdb /**< Operation now in progress */
|
||||
#define EINTR 0xdc /**< Interrupted system call */
|
||||
#define EINVAL 0xdd /**< Invalid argument */
|
||||
#define EIO 0xde /**< Input/output error */
|
||||
#define EISCONN 0xdf /**< Transport endpoint is already connected */
|
||||
#define EMFILE 0xe0 /**< Too many open files */
|
||||
#define EMSGSIZE 0xe1 /**< Message too long */
|
||||
#define ENAMETOOLONG 0xe2 /**< File name too long */
|
||||
#define ENETDOWN 0xe3 /**< Network is down */
|
||||
#define ENETRESET 0xe4 /**< Network dropped connection on reset */
|
||||
#define ENETUNREACH 0xe5 /**< Network is unreachable */
|
||||
#define ENFILE EMFILE /**< Too many open files in system */
|
||||
/** Cannot allocate memory */
|
||||
#define ENOMEM PXENV_STATUS_OUT_OF_RESOURCES
|
||||
#define EBADIMG 0xd0
|
||||
#define EIMGRET 0xd1
|
||||
#define ETIMEDOUT 0xd2
|
||||
#define EINVAL 0xd3
|
||||
#define ENOENT 0xd4
|
||||
#define EAFNOSUPPORT 0xd5
|
||||
#define EAGAIN 0xd6
|
||||
#define EIO 0xd7
|
||||
#define ENOBUFS ENOMEM /**< No buffer space available */
|
||||
#define ENODATA 0xe6 /**< No data available */
|
||||
#define ENODEV 0xe7 /**< No such device */
|
||||
#define ENOENT 0xe8 /**< No such file or directory */
|
||||
#define ENOEXEC 0xe9 /**< Exec format error */
|
||||
#define ENOMSG ENODATA /**< No message of the desired type */
|
||||
#define ENOSR 0xea /**< No stream resources */
|
||||
#define ENOSTR 0xeb /**< Not a stream */
|
||||
#define ENOSYS 0xec /**< Function not implemented */
|
||||
#define ENOTCONN 0xed /**< Transport endpoint is not connected */
|
||||
#define ENOTSOCK 0xee /**< Socket operation on non-socket */
|
||||
#define EOPNOTSUPP 0xef /**< Operation not supported */
|
||||
#define ENOTSUP EOPNOTSUPP /**< Not supported */
|
||||
#define ENOTTY 0xf0 /**< Inappropriate ioctl for device */
|
||||
#define ENXIO ENODEV /**< No such device or address */
|
||||
#define EPERM EACCES /**< Operation not permitted */
|
||||
#define EPROTO 0xf1 /**< Protocol error */
|
||||
#define EPROTONOSUPPORT 0xf2 /**< Protocol not supported */
|
||||
#define EPROTOTYPE 0xf3 /**< Protocol wrong type for socket */
|
||||
#define ETIMEDOUT 0xf4 /**< Connection timed out */
|
||||
#define EWOULDBLOCK EAGAIN /**< Resource temporarily unavailable */
|
||||
|
||||
/* Data structures and declarations */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user