176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#ifndef ERRNO_H
276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ERRNO_H
376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
476d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanFILE_LICENCE ( GPL2_OR_LATER );
576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** @file
776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Error codes
976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Return status codes as used within gPXE are designed to allow for
1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * maximum visibility into the source of an error even in an end-user
1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * build with no debugging.  They are constructed as follows:
1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Bits 7-0 : PXE error code
1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * This is the closest equivalent PXE error code
1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * (e.g. PXENV_STATUS_OUT_OF_RESOURCES), and is the only part of the
1876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * error that will be returned via the PXE API, since PXE has
1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * predefined error codes.
2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Bits 12-8 : Per-file disambiguator
2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * When the same error number can be generated from multiple points
2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * within a file, this field can be used to identify the unique
2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * instance.
2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Bits 23-13 : File identifier
2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * This is a unique identifier for the file generating the error
3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * (e.g. ERRFILE_tcp for tcp.c).
3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Bits 30-24 : POSIX error code
3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * This is the closest equivalent POSIX error code (e.g. ENOMEM).
3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Bit 31 : Reserved
3776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Errors are usually return as negative error numbers (e.g. -EINVAL);
3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * bit 31 is therefore unusable.
4076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
4176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
4276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * The convention within the code is that errors are negative and
4376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * expressed using the POSIX error code and (optionally) a per-file
4476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * disambiguator, e.g.
4576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
4676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *     return -EINVAL;
4776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
4876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * or
4976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
5076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *     #define ETCP_BAD_CHECKSUM EUNIQ_02
5176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *     return -( EINVAL | ETCP_BAD_CHECKSUM )
5276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
5376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * By various bits of preprocessor magic, the PXE error code and file
5476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * identifier are already incorporated into the definition of the
5576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * POSIX error code, which keeps the code relatively clean.
5676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
5776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
5876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Functions that wish to return failures should be declared as
5976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * returning an integer @c rc "Return status code".  A return value of
6076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * zero indicates success, a non-zero value indicates failure.  The
6176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * return value can be passed directly to strerror() in order to
6276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * generate a human-readable error message, e.g.
6376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
6476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *     if ( ( rc = some_function ( ... ) ) != 0 ) {
6576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *         DBG ( "Whatever I was trying to do failed: %s\n", strerror ( rc ) );
6676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *         return rc;
6776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *     }
6876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
6976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * As illustrated in the above example, error returns should generally
7076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * be directly propagated upward to the calling function.
7176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
7276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */
7376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
7476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* Get definitions for file identifiers */
7576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#include <gpxe/errfile.h>
7676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
7776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* If we do not have a valid file identifier, generate a compiler
7876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * warning upon usage of any error codes.  (Don't just use a #warning,
7976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * because some files include errno.h but don't ever actually use any
8076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * error codes.)
8176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */
8276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#if ! ERRFILE
8376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanextern char missing_errfile_declaration[] __attribute__ (( deprecated ));
8476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#undef ERRFILE
8576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ERRFILE ( 0 * ( ( int ) missing_errfile_declaration ) )
8676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif
8776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
8876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Derive PXENV_STATUS code from gPXE error number */
8976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define PXENV_STATUS( rc ) ( (-(rc)) & 0x00ff )
9076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
9176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/**
9276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * @defgroup pxeerrors PXE error codes
9376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
9476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * The names, meanings and values of these error codes are defined by
9576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * the PXE specification.
9676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
9776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * @{
9876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */
9976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
10076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* Generic errors */
10176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_SUCCESS					       0x0000
10276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_FAILURE					       0x0001
10376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_BAD_FUNC					       0x0002
10476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_UNSUPPORTED				       0x0003
10576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_KEEP_UNDI					       0x0004
10676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_KEEP_ALL					       0x0005
10776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_OUT_OF_RESOURCES				       0x0006
10876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
10976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* ARP errors (0x0010 to 0x001f) */
11076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_ARP_TIMEOUT				       0x0011
11176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
11276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* Base-Code state errors */
11376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_UDP_CLOSED					       0x0018
11476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_UDP_OPEN					       0x0019
11576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_TFTP_CLOSED				       0x001a
11676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_TFTP_OPEN					       0x001b
11776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
11876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* BIOS/system errors (0x0020 to 0x002f) */
11976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_MCOPY_PROBLEM				       0x0020
12076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_BIS_INTEGRITY_FAILURE			       0x0021
12176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_BIS_VALIDATE_FAILURE			       0x0022
12276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_BIS_INIT_FAILURE				       0x0023
12376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_BIS_SHUTDOWN_FAILURE			       0x0024
12476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_BIS_GBOA_FAILURE				       0x0025
12576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_BIS_FREE_FAILURE				       0x0026
12676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_BIS_GSI_FAILURE				       0x0027
12776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_BIS_BAD_CKSUM				       0x0028
12876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
12976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* TFTP/MTFTP errors (0x0030 to 0x003f) */
13076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_TFTP_CANNOT_ARP_ADDRESS			       0x0030
13176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_TFTP_OPEN_TIMEOUT				       0x0032
13276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_TFTP_UNKNOWN_OPCODE			       0x0033
13376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_TFTP_READ_TIMEOUT				       0x0035
13476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_TFTP_ERROR_OPCODE				       0x0036
13576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_TFTP_CANNOT_OPEN_CONNECTION		       0x0038
13676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_TFTP_CANNOT_READ_FROM_CONNECTION		       0x0039
13776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_TFTP_TOO_MANY_PACKAGES			       0x003a
13876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_TFTP_FILE_NOT_FOUND			       0x003b
13976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_TFTP_ACCESS_VIOLATION			       0x003c
14076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_TFTP_NO_MCAST_ADDRESS			       0x003d
14176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_TFTP_NO_FILESIZE				       0x003e
14276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_TFTP_INVALID_PACKET_SIZE			       0x003f
14376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
14476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* Reserved errors 0x0040 to 0x004f) */
14576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
14676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* DHCP/BOOTP errors (0x0050 to 0x005f) */
14776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_DHCP_TIMEOUT				       0x0051
14876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_DHCP_NO_IP_ADDRESS				       0x0052
14976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_DHCP_NO_BOOTFILE_NAME			       0x0053
15076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_DHCP_BAD_IP_ADDRESS			       0x0054
15176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
15276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* Driver errors (0x0060 to 0x006f) */
15376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_UNDI_INVALID_FUNCTION			       0x0060
15476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_UNDI_MEDIATEST_FAILED			       0x0061
15576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_UNDI_CANNOT_INIT_NIC_FOR_MCAST		       0x0062
15676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_UNDI_CANNOT_INITIALIZE_NIC			       0x0063
15776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_UNDI_CANNOT_INITIALIZE_PHY			       0x0064
15876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_UNDI_CANNOT_READ_CONFIG_DATA		       0x0065
15976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_UNDI_CANNOT_READ_INIT_DATA			       0x0066
16076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_UNDI_BAD_MAC_ADDRESS			       0x0067
16176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_UNDI_BAD_EEPROM_CHECKSUM			       0x0068
16276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_UNDI_ERROR_SETTING_ISR			       0x0069
16376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_UNDI_INVALID_STATE				       0x006a
16476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_UNDI_TRANSMIT_ERROR			       0x006b
16576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_UNDI_INVALID_PARAMETER			       0x006c
16676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
16776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* ROM and NBP bootstrap errors (0x0070 to 0x007f) */
16876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_BSTRAP_PROMPT_MENU				       0x0074
16976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_BSTRAP_MCAST_ADDR				       0x0076
17076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_BSTRAP_MISSING_LIST			       0x0077
17176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_BSTRAP_NO_RESPONSE				       0x0078
17276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_BSTRAP_FILE_TOO_BIG			       0x0079
17376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
17476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* Environment NBP errors (0x0080 to 0x008f) */
17576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
17676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* Reserved errors (0x0090 to 0x009f) */
17776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
17876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* Miscellaneous errors (0x00a0 to 0x00af) */
17976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_BINL_CANCELED_BY_KEYSTROKE			       0x00a0
18076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_BINL_NO_PXE_SERVER				       0x00a1
18176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_NOT_AVAILABLE_IN_PMODE			       0x00a2
18276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_NOT_AVAILABLE_IN_RMODE			       0x00a3
18376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
18476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* BUSD errors (0x00b0 to 0x00bf) */
18576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_BUSD_DEVICE_NOT_SUPPORTED			       0x00b0
18676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
18776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* Loader errors (0x00c0 to 0x00cf) */
18876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_LOADER_NO_FREE_BASE_MEMORY			       0x00c0
18976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_LOADER_NO_BC_ROMID				       0x00c1
19076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_LOADER_BAD_BC_ROMID			       0x00c2
19176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_LOADER_BAD_BC_RUNTIME_IMAGE		       0x00c3
19276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_LOADER_NO_UNDI_ROMID			       0x00c4
19376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_LOADER_BAD_UNDI_ROMID			       0x00c5
19476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_LOADER_BAD_UNDI_DRIVER_IMAGE		       0x00c6
19576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_LOADER_NO_PXE_STRUCT			       0x00c8
19676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_LOADER_NO_PXENV_STRUCT			       0x00c9
19776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_LOADER_UNDI_START				       0x00ca
19876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define	PXENV_STATUS_LOADER_BC_START				       0x00cb
19976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
20076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** @} */
20176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
20276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/**
20376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * @defgroup posixerrors POSIX error codes
20476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
20576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * The names and meanings (but not the values) of these error codes
20676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * are defined by POSIX.  We choose to assign unique values which
20776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * incorporate the closest equivalent PXE error code, so that code may
20876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * simply use ENOMEM, rather than having to use the cumbersome
20976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * (ENOMEM|PXENV_STATUS_OUT_OF_RESOURCES).
21076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
21176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * @{
21276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */
21376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
21476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Operation completed successfully */
21576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENOERR			( ERRFILE | PXENV_STATUS_SUCCESS | 0x00000000 )
21676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
21776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Arg list too long */
21876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define E2BIG		       ( ERRFILE | PXENV_STATUS_BAD_FUNC | 0x01000000 )
21976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
22076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Permission denied */
22176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EACCES	  ( ERRFILE | PXENV_STATUS_TFTP_ACCESS_VIOLATION | 0x02000000 )
22276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
22376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Address in use */
22476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EADDRINUSE	       ( ERRFILE | PXENV_STATUS_UDP_OPEN | 0x03000000 )
22576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
22676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Address not available */
22776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EADDRNOTAVAIL	       ( ERRFILE | PXENV_STATUS_UDP_OPEN | 0x04000000 )
22876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
22976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Address family not supported */
23076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EAFNOSUPPORT	    ( ERRFILE | PXENV_STATUS_UNSUPPORTED | 0x05000000 )
23176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
23276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Resource temporarily unavailable */
23376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EAGAIN			( ERRFILE | PXENV_STATUS_FAILURE | 0x06000000 )
23476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
23576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Connection already in progress */
23676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EALREADY	       ( ERRFILE | PXENV_STATUS_UDP_OPEN | 0x07000000 )
23776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
23876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Bad file descriptor */
23976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EBADF		    ( ERRFILE | PXENV_STATUS_TFTP_CLOSED | 0x08000000 )
24076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
24176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Bad message */
24276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EBADMSG			( ERRFILE | PXENV_STATUS_FAILURE | 0x09000000 )
24376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
24476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Resource busy */
24576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EBUSY	       ( ERRFILE | PXENV_STATUS_OUT_OF_RESOURCES | 0x0a000000 )
24676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
24776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Operation canceled */
24876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ECANCELED \
24976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	     ( ERRFILE | PXENV_STATUS_BINL_CANCELED_BY_KEYSTROKE | 0x0b000000 )
25076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
25176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** No child processes */
25276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ECHILD	    ( ERRFILE | PXENV_STATUS_TFTP_FILE_NOT_FOUND | 0x0c000000 )
25376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
25476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Connection aborted */
25576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ECONNABORTED \
25676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman       ( ERRFILE | PXENV_STATUS_TFTP_CANNOT_READ_FROM_CONNECTION | 0x0d000000 )
25776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
25876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Connection refused */
25976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ECONNREFUSED \
26076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	    ( ERRFILE | PXENV_STATUS_TFTP_CANNOT_OPEN_CONNECTION | 0x0e000000 )
26176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
26276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Connection reset */
26376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ECONNRESET \
26476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman       ( ERRFILE | PXENV_STATUS_TFTP_CANNOT_READ_FROM_CONNECTION | 0x0f000000 )
26576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
26676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Resource deadlock avoided */
26776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EDEADLK			( ERRFILE | PXENV_STATUS_FAILURE | 0x10000000 )
26876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
26976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Destination address required */
27076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EDESTADDRREQ	       ( ERRFILE | PXENV_STATUS_BAD_FUNC | 0x11000000 )
27176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
27276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Domain error */
27376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EDOM			( ERRFILE | PXENV_STATUS_FAILURE | 0x12000000 )
27476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
27576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Reserved */
27676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EDQUOT			( ERRFILE | PXENV_STATUS_FAILURE | 0x13000000 )
27776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
27876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** File exists */
27976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EEXIST			( ERRFILE | PXENV_STATUS_FAILURE | 0x14000000 )
28076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
28176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Bad address */
28276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFAULT		  ( ERRFILE | PXENV_STATUS_MCOPY_PROBLEM | 0x15000000 )
28376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
28476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** File too large */
28576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFBIG		  ( ERRFILE | PXENV_STATUS_MCOPY_PROBLEM | 0x16000000 )
28676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
28776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Host is unreachable */
28876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EHOSTUNREACH	    ( ERRFILE | PXENV_STATUS_ARP_TIMEOUT | 0x17000000 )
28976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
29076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Identifier removed */
29176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EIDRM			( ERRFILE | PXENV_STATUS_FAILURE | 0x18000000 )
29276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
29376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Illegal byte sequence */
29476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EILSEQ			( ERRFILE | PXENV_STATUS_FAILURE | 0x19000000 )
29576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
29676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Operation in progress */
29776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EINPROGRESS		( ERRFILE | PXENV_STATUS_FAILURE | 0x1a000000 )
29876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
29976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Interrupted function call */
30076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EINTR			( ERRFILE | PXENV_STATUS_FAILURE | 0x1b000000 )
30176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
30276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Invalid argument */
30376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EINVAL		       ( ERRFILE | PXENV_STATUS_BAD_FUNC | 0x1c000000 )
30476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
30576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Input/output error */
30676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EIO \
30776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman       ( ERRFILE | PXENV_STATUS_TFTP_CANNOT_READ_FROM_CONNECTION | 0x1d000000 )
30876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
30976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Socket is connected */
31076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EISCONN		       ( ERRFILE | PXENV_STATUS_UDP_OPEN | 0x1e000000 )
31176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
31276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Is a directory */
31376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EISDIR			( ERRFILE | PXENV_STATUS_FAILURE | 0x1f000000 )
31476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
31576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Too many levels of symbolic links */
31676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ELOOP			( ERRFILE | PXENV_STATUS_FAILURE | 0x20000000 )
31776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
31876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Too many open files */
31976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EMFILE	       ( ERRFILE | PXENV_STATUS_OUT_OF_RESOURCES | 0x21000000 )
32076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
32176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Too many links */
32276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EMLINK			( ERRFILE | PXENV_STATUS_FAILURE | 0x22000000 )
32376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
32476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Inappropriate message buffer length */
32576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EMSGSIZE	       ( ERRFILE | PXENV_STATUS_BAD_FUNC | 0x23000000 )
32676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
32776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Reserved */
32876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EMULTIHOP		( ERRFILE | PXENV_STATUS_FAILURE | 0x24000000 )
32976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
33076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Filename too long */
33176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENAMETOOLONG		( ERRFILE | PXENV_STATUS_FAILURE | 0x25000000 )
33276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
33376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Network is down */
33476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENETDOWN	    ( ERRFILE | PXENV_STATUS_ARP_TIMEOUT | 0x26000000 )
33576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
33676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Connection aborted by network */
33776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENETRESET		( ERRFILE | PXENV_STATUS_FAILURE | 0x27000000 )
33876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
33976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Network unreachable */
34076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENETUNREACH	    ( ERRFILE | PXENV_STATUS_ARP_TIMEOUT | 0x28000000 )
34176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
34276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Too many open files in system */
34376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENFILE	       ( ERRFILE | PXENV_STATUS_OUT_OF_RESOURCES | 0x29000000 )
34476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
34576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** No buffer space available */
34676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENOBUFS	       ( ERRFILE | PXENV_STATUS_OUT_OF_RESOURCES | 0x2a000000 )
34776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
34876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** No message is available on the STREAM head read queue */
34976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENODATA			( ERRFILE | PXENV_STATUS_FAILURE | 0x2b000000 )
35076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
35176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** No such device */
35276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENODEV	    ( ERRFILE | PXENV_STATUS_TFTP_FILE_NOT_FOUND | 0x2c000000 )
35376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
35476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** No such file or directory */
35576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENOENT	    ( ERRFILE | PXENV_STATUS_TFTP_FILE_NOT_FOUND | 0x2d000000 )
35676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
35776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Exec format error */
35876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENOEXEC			( ERRFILE | PXENV_STATUS_FAILURE | 0x2e000000 )
35976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
36076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** No locks available */
36176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENOLCK			( ERRFILE | PXENV_STATUS_FAILURE | 0x2f000000 )
36276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
36376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Reserved */
36476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENOLINK			( ERRFILE | PXENV_STATUS_FAILURE | 0x30000000 )
36576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
36676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Not enough space */
36776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENOMEM	       ( ERRFILE | PXENV_STATUS_OUT_OF_RESOURCES | 0x31000000 )
36876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
36976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** No message of the desired type */
37076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENOMSG			( ERRFILE | PXENV_STATUS_FAILURE | 0x32000000 )
37176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
37276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Protocol not available */
37376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENOPROTOOPT	    ( ERRFILE | PXENV_STATUS_UNSUPPORTED | 0x33000000 )
37476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
37576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** No space left on device */
37676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENOSPC	       ( ERRFILE | PXENV_STATUS_OUT_OF_RESOURCES | 0x34000000 )
37776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
37876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** No STREAM resources */
37976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENOSR	       ( ERRFILE | PXENV_STATUS_OUT_OF_RESOURCES | 0x35000000 )
38076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
38176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Not a STREAM */
38276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENOSTR			( ERRFILE | PXENV_STATUS_FAILURE | 0x36000000 )
38376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
38476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Function not implemented */
38576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENOSYS		    ( ERRFILE | PXENV_STATUS_UNSUPPORTED | 0x37000000 )
38676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
38776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** The socket is not connected */
38876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENOTCONN		( ERRFILE | PXENV_STATUS_FAILURE | 0x38000000 )
38976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
39076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Not a directory */
39176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENOTDIR			( ERRFILE | PXENV_STATUS_FAILURE | 0x39000000 )
39276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
39376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Directory not empty */
39476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENOTEMPTY		( ERRFILE | PXENV_STATUS_FAILURE | 0x3a000000 )
39576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
39676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Not a socket */
39776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENOTSOCK		( ERRFILE | PXENV_STATUS_FAILURE | 0x3b000000 )
39876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
39976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Not supported */
40076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENOTSUP		    ( ERRFILE | PXENV_STATUS_UNSUPPORTED | 0x3c000000 )
40176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
40276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Inappropriate I/O control operation */
40376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENOTTY			( ERRFILE | PXENV_STATUS_FAILURE | 0x3d000000 )
40476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
40576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** No such device or address */
40676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ENXIO	    ( ERRFILE | PXENV_STATUS_TFTP_FILE_NOT_FOUND | 0x3e000000 )
40776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
40876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Operation not supported on socket */
40976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EOPNOTSUPP	    ( ERRFILE | PXENV_STATUS_UNSUPPORTED | 0x3f000000 )
41076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
41176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Value too large to be stored in data type */
41276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EOVERFLOW		( ERRFILE | PXENV_STATUS_FAILURE | 0x40000000 )
41376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
41476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Operation not permitted */
41576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EPERM	  ( ERRFILE | PXENV_STATUS_TFTP_ACCESS_VIOLATION | 0x41000000 )
41676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
41776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Broken pipe */
41876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EPIPE			( ERRFILE | PXENV_STATUS_FAILURE | 0x42000000 )
41976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
42076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Protocol error */
42176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EPROTO			( ERRFILE | PXENV_STATUS_FAILURE | 0x43000000 )
42276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
42376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Protocol not supported */
42476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EPROTONOSUPPORT	    ( ERRFILE | PXENV_STATUS_UNSUPPORTED | 0x44000000 )
42576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
42676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Protocol wrong type for socket */
42776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EPROTOTYPE		( ERRFILE | PXENV_STATUS_FAILURE | 0x45000000 )
42876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
42976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Result too large */
43076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ERANGE			( ERRFILE | PXENV_STATUS_FAILURE | 0x46000000 )
43176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
43276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Read-only file system */
43376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EROFS			( ERRFILE | PXENV_STATUS_FAILURE | 0x47000000 )
43476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
43576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Invalid seek */
43676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ESPIPE			( ERRFILE | PXENV_STATUS_FAILURE | 0x48000000 )
43776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
43876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** No such process */
43976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ESRCH	    ( ERRFILE | PXENV_STATUS_TFTP_FILE_NOT_FOUND | 0x49000000 )
44076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
44176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Stale file handle */
44276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ESTALE			( ERRFILE | PXENV_STATUS_FAILURE | 0x4a000000 )
44376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
44476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** STREAM ioctl() timeout */
44576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ETIME			( ERRFILE | PXENV_STATUS_FAILURE | 0x4b000000 )
44676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
44776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Operation timed out */
44876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ETIMEDOUT     ( ERRFILE | PXENV_STATUS_TFTP_READ_TIMEOUT | 0x4c000000 )
44976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
45076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Text file busy */
45176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ETXTBSY			( ERRFILE | PXENV_STATUS_FAILURE | 0x4d000000 )
45276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
45376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Operation would block (different from EAGAIN!) */
45476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EWOULDBLOCK	      ( ERRFILE | PXENV_STATUS_TFTP_OPEN | 0x4e000000 )
45576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
45676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** Improper link */
45776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EXDEV			( ERRFILE | PXENV_STATUS_FAILURE | 0x4f000000 )
45876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
45976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** @} */
46076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
46176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/**
46276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * @defgroup euniq Per-file error disambiguators
46376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
46476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Files which use the same error number multiple times should
46576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * probably define their own error subspace using these
46676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * disambiguators.  For example:
46776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
46876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *     #define ETCP_HEADER_TOO_SHORT	EUNIQ_01
46976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *     #define ETCP_BAD_CHECKSUM	EUNIQ_02
47076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
47176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * @{
47276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */
47376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
47476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_01	0x00000100
47576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_02	0x00000200
47676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_03	0x00000300
47776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_04	0x00000400
47876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_05	0x00000500
47976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_06	0x00000600
48076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_07	0x00000700
48176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_08	0x00000800
48276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_09	0x00000900
48376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_0A	0x00000a00
48476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_0B	0x00000b00
48576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_0C	0x00000c00
48676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_0D	0x00000d00
48776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_0E	0x00000e00
48876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_0F	0x00000f00
48976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_10	0x00001000
49076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_11	0x00001100
49176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_12	0x00001200
49276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_13	0x00001300
49376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_14	0x00001400
49476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_15	0x00001500
49576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_16	0x00001600
49676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_17	0x00001700
49776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_18	0x00001800
49876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_19	0x00001900
49976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_1A	0x00001a00
50076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_1B	0x00001b00
50176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_1C	0x00001c00
50276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_1D	0x00001d00
50376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_1E	0x00001e00
50476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EUNIQ_1F	0x00001f00
50576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
50676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** @} */
50776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
50876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanextern int errno;
50976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
51076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif /* ERRNO_H */
511