summaryrefslogtreecommitdiffstats
path: root/src/include/ipxe/errno/efi.h
blob: e4f9e5fe1c95f009e5efdff38b67c01015e5afdf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#ifndef _IPXE_ERRNO_EFI_H
#define _IPXE_ERRNO_EFI_H

/**
 * @file
 *
 * EFI platform error codes
 *
 * We derive our platform error codes from the possible values for
 * EFI_STATUS defined in the UEFI specification.
 *
 * EFI_STATUS codes are 32-bit values consisting of a top bit which is
 * set for errors and clear for warnings, and a mildly undefined
 * code of low bits indicating the precise error/warning code.
 * Errors and warnings have completely separate namespaces.
 *
 * We assume that no EFI_STATUS code will ever be defined which uses
 * more than bits 0-6 of the low bits.  We then choose to encode our
 * platform-specific error by mapping bit 31 of the EFI_STATUS to bit
 * 7 of the platform-specific error code, and preserving bits 0-6
 * as-is.
 */

FILE_LICENCE ( GPL2_OR_LATER );

#include <ipxe/efi/efi.h>
#include <ipxe/efi/Uefi/UefiBaseType.h>

/**
 * Convert platform error code to platform component of iPXE error code
 *
 * @v platform		Platform error code
 * @ret errno		Platform component of iPXE error code
 */
#define PLATFORM_TO_ERRNO( platform ) \
	( ( (platform) | ( (platform) >> 24 ) ) & 0xff )

/**
 * Convert iPXE error code to platform error code
 *
 * @v errno		iPXE error code
 * @ret platform	Platform error code
 */
#define ERRNO_TO_PLATFORM( errno ) \
	( ( ( (errno) << 24 ) | (errno) ) & 0x8000007f )

/* Platform-specific error codes */
#define PLATFORM_ENOERR		EFI_SUCCESS
#define PLATFORM_E2BIG		EFI_BUFFER_TOO_SMALL
#define PLATFORM_EACCES		EFI_ACCESS_DENIED
#define PLATFORM_EADDRINUSE	EFI_ALREADY_STARTED
#define PLATFORM_EADDRNOTAVAIL	EFI_NOT_READY
#define PLATFORM_EAFNOSUPPORT	EFI_UNSUPPORTED
#define PLATFORM_EAGAIN		EFI_NOT_READY
#define PLATFORM_EALREADY	EFI_ALREADY_STARTED
#define PLATFORM_EBADF		EFI_INVALID_PARAMETER
#define PLATFORM_EBADMSG	EFI_PROTOCOL_ERROR
#define PLATFORM_EBUSY		EFI_NO_RESPONSE
#define PLATFORM_ECANCELED	EFI_ABORTED
#define PLATFORM_ECHILD		EFI_NOT_FOUND
#define PLATFORM_ECONNABORTED	EFI_ABORTED
#define PLATFORM_ECONNREFUSED	EFI_NO_RESPONSE
#define PLATFORM_ECONNRESET	EFI_ABORTED
#define PLATFORM_EDEADLK	EFI_NOT_READY
#define PLATFORM_EDESTADDRREQ	EFI_PROTOCOL_ERROR
#define PLATFORM_EDOM		EFI_INVALID_PARAMETER
#define PLATFORM_EDQUOT		EFI_VOLUME_FULL
#define PLATFORM_EEXIST		EFI_WRITE_PROTECTED
#define PLATFORM_EFAULT		EFI_INVALID_PARAMETER
#define PLATFORM_EFBIG		EFI_END_OF_MEDIA
#define PLATFORM_EHOSTUNREACH	EFI_NO_RESPONSE
#define PLATFORM_EIDRM		EFI_INVALID_PARAMETER
#define PLATFORM_EILSEQ		EFI_INVALID_PARAMETER
#define PLATFORM_EINPROGRESS	EFI_ALREADY_STARTED
#define PLATFORM_EINTR		EFI_NOT_READY
#define PLATFORM_EINVAL		EFI_INVALID_PARAMETER
#define PLATFORM_EIO		EFI_PROTOCOL_ERROR
#define PLATFORM_EISCONN	EFI_ALREADY_STARTED
#define PLATFORM_EISDIR		EFI_PROTOCOL_ERROR
#define PLATFORM_ELOOP		EFI_VOLUME_CORRUPTED
#define PLATFORM_EMFILE		EFI_OUT_OF_RESOURCES
#define PLATFORM_EMLINK		EFI_OUT_OF_RESOURCES
#define PLATFORM_EMSGSIZE	EFI_BAD_BUFFER_SIZE
#define PLATFORM_EMULTIHOP	EFI_INVALID_PARAMETER
#define PLATFORM_ENAMETOOLONG	EFI_INVALID_PARAMETER
#define PLATFORM_ENETDOWN	EFI_NO_RESPONSE
#define PLATFORM_ENETRESET	EFI_ABORTED
#define PLATFORM_ENETUNREACH	EFI_NO_RESPONSE
#define PLATFORM_ENFILE		EFI_OUT_OF_RESOURCES
#define PLATFORM_ENOBUFS	EFI_OUT_OF_RESOURCES
#define PLATFORM_ENODATA	EFI_NO_RESPONSE
#define PLATFORM_ENODEV		EFI_DEVICE_ERROR
#define PLATFORM_ENOENT		EFI_NOT_FOUND
#define PLATFORM_ENOEXEC	EFI_LOAD_ERROR
#define PLATFORM_ENOLCK		EFI_OUT_OF_RESOURCES
#define PLATFORM_ENOLINK	EFI_OUT_OF_RESOURCES
#define PLATFORM_ENOMEM		EFI_OUT_OF_RESOURCES
#define PLATFORM_ENOMSG		EFI_PROTOCOL_ERROR
#define PLATFORM_ENOPROTOOPT	EFI_UNSUPPORTED
#define PLATFORM_ENOSPC		EFI_VOLUME_FULL
#define PLATFORM_ENOSR		EFI_OUT_OF_RESOURCES
#define PLATFORM_ENOSTR		EFI_PROTOCOL_ERROR
#define PLATFORM_ENOSYS		EFI_UNSUPPORTED
#define PLATFORM_ENOTCONN	EFI_NOT_STARTED
#define PLATFORM_ENOTDIR	EFI_VOLUME_CORRUPTED
#define PLATFORM_ENOTEMPTY	EFI_VOLUME_CORRUPTED
#define PLATFORM_ENOTSOCK	EFI_INVALID_PARAMETER
#define PLATFORM_ENOTSUP	EFI_UNSUPPORTED
#define PLATFORM_ENOTTY		EFI_UNSUPPORTED
#define PLATFORM_ENXIO		EFI_NOT_FOUND
#define PLATFORM_EOPNOTSUPP	EFI_UNSUPPORTED
#define PLATFORM_EOVERFLOW	EFI_BUFFER_TOO_SMALL
#define PLATFORM_EPERM		EFI_ACCESS_DENIED
#define PLATFORM_EPIPE		EFI_ABORTED
#define PLATFORM_EPROTO		EFI_PROTOCOL_ERROR
#define PLATFORM_EPROTONOSUPPORT EFI_UNSUPPORTED
#define PLATFORM_EPROTOTYPE	EFI_INVALID_PARAMETER
#define PLATFORM_ERANGE		EFI_BUFFER_TOO_SMALL
#define PLATFORM_EROFS		EFI_WRITE_PROTECTED
#define PLATFORM_ESPIPE		EFI_END_OF_FILE
#define PLATFORM_ESRCH		EFI_NOT_STARTED
#define PLATFORM_ESTALE		EFI_PROTOCOL_ERROR
#define PLATFORM_ETIME		EFI_TIMEOUT
#define PLATFORM_ETIMEDOUT	EFI_TIMEOUT
#define PLATFORM_ETXTBSY	EFI_MEDIA_CHANGED
#define PLATFORM_EWOULDBLOCK	EFI_NOT_READY
#define PLATFORM_EXDEV		EFI_VOLUME_CORRUPTED

#endif /* _IPXE_ERRNO_EFI_H */