1 /* 2 * Copyright 2007, Haiku, Inc. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5 #ifndef _ERRORS_H 6 #define _ERRORS_H 7 8 9 #include <limits.h> 10 11 12 /* Error baselines */ 13 #define B_GENERAL_ERROR_BASE LONG_MIN 14 #define B_OS_ERROR_BASE (B_GENERAL_ERROR_BASE + 0x1000) 15 #define B_APP_ERROR_BASE (B_GENERAL_ERROR_BASE + 0x2000) 16 #define B_INTERFACE_ERROR_BASE (B_GENERAL_ERROR_BASE + 0x3000) 17 #define B_MEDIA_ERROR_BASE (B_GENERAL_ERROR_BASE + 0x4000) 18 /* - 0x41ff */ 19 #define B_TRANSLATION_ERROR_BASE (B_GENERAL_ERROR_BASE + 0x4800) 20 /* - 0x48ff */ 21 #define B_MIDI_ERROR_BASE (B_GENERAL_ERROR_BASE + 0x5000) 22 #define B_STORAGE_ERROR_BASE (B_GENERAL_ERROR_BASE + 0x6000) 23 #define B_POSIX_ERROR_BASE (B_GENERAL_ERROR_BASE + 0x7000) 24 #define B_MAIL_ERROR_BASE (B_GENERAL_ERROR_BASE + 0x8000) 25 #define B_PRINT_ERROR_BASE (B_GENERAL_ERROR_BASE + 0x9000) 26 #define B_DEVICE_ERROR_BASE (B_GENERAL_ERROR_BASE + 0xa000) 27 28 /* Developer-defined errors start at (B_ERRORS_END+1) */ 29 #define B_ERRORS_END (B_GENERAL_ERROR_BASE + 0xffff) 30 31 /* General Errors */ 32 #define B_NO_MEMORY (B_GENERAL_ERROR_BASE + 0) 33 #define B_IO_ERROR (B_GENERAL_ERROR_BASE + 1) 34 #define B_PERMISSION_DENIED (B_GENERAL_ERROR_BASE + 2) 35 #define B_BAD_INDEX (B_GENERAL_ERROR_BASE + 3) 36 #define B_BAD_TYPE (B_GENERAL_ERROR_BASE + 4) 37 #define B_BAD_VALUE (B_GENERAL_ERROR_BASE + 5) 38 #define B_MISMATCHED_VALUES (B_GENERAL_ERROR_BASE + 6) 39 #define B_NAME_NOT_FOUND (B_GENERAL_ERROR_BASE + 7) 40 #define B_NAME_IN_USE (B_GENERAL_ERROR_BASE + 8) 41 #define B_TIMED_OUT (B_GENERAL_ERROR_BASE + 9) 42 #define B_INTERRUPTED (B_GENERAL_ERROR_BASE + 10) 43 #define B_WOULD_BLOCK (B_GENERAL_ERROR_BASE + 11) 44 #define B_CANCELED (B_GENERAL_ERROR_BASE + 12) 45 #define B_NO_INIT (B_GENERAL_ERROR_BASE + 13) 46 #define B_BUSY (B_GENERAL_ERROR_BASE + 14) 47 #define B_NOT_ALLOWED (B_GENERAL_ERROR_BASE + 15) 48 #define B_BAD_DATA (B_GENERAL_ERROR_BASE + 16) 49 #define B_DONT_DO_THAT (B_GENERAL_ERROR_BASE + 17) 50 51 #define B_ERROR (-1) 52 #define B_OK ((int)0) 53 #define B_NO_ERROR ((int)0) 54 55 /* Kernel Kit Errors */ 56 #define B_BAD_SEM_ID (B_OS_ERROR_BASE + 0) 57 #define B_NO_MORE_SEMS (B_OS_ERROR_BASE + 1) 58 59 #define B_BAD_THREAD_ID (B_OS_ERROR_BASE + 0x100) 60 #define B_NO_MORE_THREADS (B_OS_ERROR_BASE + 0x101) 61 #define B_BAD_THREAD_STATE (B_OS_ERROR_BASE + 0x102) 62 #define B_BAD_TEAM_ID (B_OS_ERROR_BASE + 0x103) 63 #define B_NO_MORE_TEAMS (B_OS_ERROR_BASE + 0x104) 64 65 #define B_BAD_PORT_ID (B_OS_ERROR_BASE + 0x200) 66 #define B_NO_MORE_PORTS (B_OS_ERROR_BASE + 0x201) 67 68 #define B_BAD_IMAGE_ID (B_OS_ERROR_BASE + 0x300) 69 #define B_BAD_ADDRESS (B_OS_ERROR_BASE + 0x301) 70 #define B_NOT_AN_EXECUTABLE (B_OS_ERROR_BASE + 0x302) 71 #define B_MISSING_LIBRARY (B_OS_ERROR_BASE + 0x303) 72 #define B_MISSING_SYMBOL (B_OS_ERROR_BASE + 0x304) 73 74 #define B_DEBUGGER_ALREADY_INSTALLED (B_OS_ERROR_BASE + 0x400) 75 76 /* Application Kit Errors */ 77 #define B_BAD_REPLY (B_APP_ERROR_BASE + 0) 78 #define B_DUPLICATE_REPLY (B_APP_ERROR_BASE + 1) 79 #define B_MESSAGE_TO_SELF (B_APP_ERROR_BASE + 2) 80 #define B_BAD_HANDLER (B_APP_ERROR_BASE + 3) 81 #define B_ALREADY_RUNNING (B_APP_ERROR_BASE + 4) 82 #define B_LAUNCH_FAILED (B_APP_ERROR_BASE + 5) 83 #define B_AMBIGUOUS_APP_LAUNCH (B_APP_ERROR_BASE + 6) 84 #define B_UNKNOWN_MIME_TYPE (B_APP_ERROR_BASE + 7) 85 #define B_BAD_SCRIPT_SYNTAX (B_APP_ERROR_BASE + 8) 86 #define B_LAUNCH_FAILED_NO_RESOLVE_LINK (B_APP_ERROR_BASE + 9) 87 #define B_LAUNCH_FAILED_EXECUTABLE (B_APP_ERROR_BASE + 10) 88 #define B_LAUNCH_FAILED_APP_NOT_FOUND (B_APP_ERROR_BASE + 11) 89 #define B_LAUNCH_FAILED_APP_IN_TRASH (B_APP_ERROR_BASE + 12) 90 #define B_LAUNCH_FAILED_NO_PREFERRED_APP (B_APP_ERROR_BASE + 13) 91 #define B_LAUNCH_FAILED_FILES_APP_NOT_FOUND (B_APP_ERROR_BASE + 14) 92 #define B_BAD_MIME_SNIFFER_RULE (B_APP_ERROR_BASE + 15) 93 #define B_NOT_A_MESSAGE (B_APP_ERROR_BASE + 16) 94 #define B_SHUTDOWN_CANCELLED (B_APP_ERROR_BASE + 17) 95 #define B_SHUTTING_DOWN (B_APP_ERROR_BASE + 18) 96 97 /* Storage Kit/File System Errors */ 98 #define B_FILE_ERROR (B_STORAGE_ERROR_BASE + 0) 99 #define B_FILE_NOT_FOUND (B_STORAGE_ERROR_BASE + 1) 100 /* deprecated: use B_ENTRY_NOT_FOUND instead */ 101 #define B_FILE_EXISTS (B_STORAGE_ERROR_BASE + 2) 102 #define B_ENTRY_NOT_FOUND (B_STORAGE_ERROR_BASE + 3) 103 #define B_NAME_TOO_LONG (B_STORAGE_ERROR_BASE + 4) 104 #define B_NOT_A_DIRECTORY (B_STORAGE_ERROR_BASE + 5) 105 #define B_DIRECTORY_NOT_EMPTY (B_STORAGE_ERROR_BASE + 6) 106 #define B_DEVICE_FULL (B_STORAGE_ERROR_BASE + 7) 107 #define B_READ_ONLY_DEVICE (B_STORAGE_ERROR_BASE + 8) 108 #define B_IS_A_DIRECTORY (B_STORAGE_ERROR_BASE + 9) 109 #define B_NO_MORE_FDS (B_STORAGE_ERROR_BASE + 10) 110 #define B_CROSS_DEVICE_LINK (B_STORAGE_ERROR_BASE + 11) 111 #define B_LINK_LIMIT (B_STORAGE_ERROR_BASE + 12) 112 #define B_BUSTED_PIPE (B_STORAGE_ERROR_BASE + 13) 113 #define B_UNSUPPORTED (B_STORAGE_ERROR_BASE + 14) 114 #define B_PARTITION_TOO_SMALL (B_STORAGE_ERROR_BASE + 15) 115 116 /* POSIX Errors */ 117 #ifdef B_USE_POSITIVE_POSIX_ERRORS 118 # define B_TO_POSIX_ERROR(error) (-(error)) 119 # define B_FROM_POSIX_ERROR(error) (-(error)) 120 #else 121 # define B_TO_POSIX_ERROR(error) (error) 122 # define B_FROM_POSIX_ERROR(error) (error) 123 #endif 124 125 #define B_POSIX_ENOMEM B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 0) 126 #define E2BIG B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 1) 127 #define ECHILD B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 2) 128 #define EDEADLK B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 3) 129 #define EFBIG B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 4) 130 #define EMLINK B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 5) 131 #define ENFILE B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 6) 132 #define ENODEV B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 7) 133 #define ENOLCK B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 8) 134 #define ENOSYS B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 9) 135 #define ENOTTY B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 10) 136 #define ENXIO B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 11) 137 #define ESPIPE B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 12) 138 #define ESRCH B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 13) 139 #define EFPOS B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 14) 140 #define ESIGPARM B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 15) 141 #define EDOM B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 16) 142 #define ERANGE B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 17) 143 #define EPROTOTYPE B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 18) 144 #define EPROTONOSUPPORT B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 19) 145 #define EPFNOSUPPORT B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 20) 146 #define EAFNOSUPPORT B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 21) 147 #define EADDRINUSE B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 22) 148 #define EADDRNOTAVAIL B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 23) 149 #define ENETDOWN B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 24) 150 #define ENETUNREACH B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 25) 151 #define ENETRESET B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 26) 152 #define ECONNABORTED B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 27) 153 #define ECONNRESET B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 28) 154 #define EISCONN B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 29) 155 #define ENOTCONN B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 30) 156 #define ESHUTDOWN B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 31) 157 #define ECONNREFUSED B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 32) 158 #define EHOSTUNREACH B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 33) 159 #define ENOPROTOOPT B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 34) 160 #define ENOBUFS B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 35) 161 #define EINPROGRESS B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 36) 162 #define EALREADY B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 37) 163 #define EILSEQ B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 38) 164 #define ENOMSG B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 39) 165 #define ESTALE B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 40) 166 #define EOVERFLOW B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 41) 167 #define EMSGSIZE B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 42) 168 #define EOPNOTSUPP B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 43) 169 #define ENOTSOCK B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 44) 170 #define EHOSTDOWN B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 45) 171 #define EBADMSG B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 46) 172 #define ECANCELED B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 47) 173 #define EDESTADDRREQ B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 48) 174 #define EDQUOT B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 49) 175 #define EIDRM B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 50) 176 #define EMULTIHOP B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 51) 177 #define ENODATA B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 52) 178 #define ENOLINK B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 53) 179 #define ENOSR B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 54) 180 #define ENOSTR B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 55) 181 #define ENOTSUP B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 56) 182 #define EPROTO B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 57) 183 #define ETIME B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 58) 184 #define ETXTBSY B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 59) 185 #define ENOATTR B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 60) 186 187 /* B_NO_MEMORY (0x80000000) can't be negated, so it needs special handling */ 188 #ifdef B_USE_POSITIVE_POSIX_ERRORS 189 # define ENOMEM B_POSIX_ENOMEM 190 #else 191 # define ENOMEM B_NO_MEMORY 192 #endif 193 194 /* POSIX errors that can be mapped to BeOS error codes */ 195 #define EACCES B_TO_POSIX_ERROR(B_PERMISSION_DENIED) 196 #define EINTR B_TO_POSIX_ERROR(B_INTERRUPTED) 197 #define EIO B_TO_POSIX_ERROR(B_IO_ERROR) 198 #define EBUSY B_TO_POSIX_ERROR(B_BUSY) 199 #define EFAULT B_TO_POSIX_ERROR(B_BAD_ADDRESS) 200 #define ETIMEDOUT B_TO_POSIX_ERROR(B_TIMED_OUT) 201 #define EAGAIN B_TO_POSIX_ERROR(B_WOULD_BLOCK) /* SysV compatibility */ 202 #define EWOULDBLOCK B_TO_POSIX_ERROR(B_WOULD_BLOCK) /* BSD compatibility */ 203 #define EBADF B_TO_POSIX_ERROR(B_FILE_ERROR) 204 #define EEXIST B_TO_POSIX_ERROR(B_FILE_EXISTS) 205 #define EINVAL B_TO_POSIX_ERROR(B_BAD_VALUE) 206 #define ENAMETOOLONG B_TO_POSIX_ERROR(B_NAME_TOO_LONG) 207 #define ENOENT B_TO_POSIX_ERROR(B_ENTRY_NOT_FOUND) 208 #define EPERM B_TO_POSIX_ERROR(B_NOT_ALLOWED) 209 #define ENOTDIR B_TO_POSIX_ERROR(B_NOT_A_DIRECTORY) 210 #define EISDIR B_TO_POSIX_ERROR(B_IS_A_DIRECTORY) 211 #define ENOTEMPTY B_TO_POSIX_ERROR(B_DIRECTORY_NOT_EMPTY) 212 #define ENOSPC B_TO_POSIX_ERROR(B_DEVICE_FULL) 213 #define EROFS B_TO_POSIX_ERROR(B_READ_ONLY_DEVICE) 214 #define EMFILE B_TO_POSIX_ERROR(B_NO_MORE_FDS) 215 #define EXDEV B_TO_POSIX_ERROR(B_CROSS_DEVICE_LINK) 216 #define ELOOP B_TO_POSIX_ERROR(B_LINK_LIMIT) 217 #define ENOEXEC B_TO_POSIX_ERROR(B_NOT_AN_EXECUTABLE) 218 #define EPIPE B_TO_POSIX_ERROR(B_BUSTED_PIPE) 219 220 /* new error codes that can be mapped to POSIX errors */ 221 #define B_BUFFER_OVERFLOW B_FROM_POSIX_ERROR(EOVERFLOW) 222 #define B_TOO_MANY_ARGS B_FROM_POSIX_ERROR(E2BIG) 223 #define B_FILE_TOO_LARGE B_FROM_POSIX_ERROR(EFBIG) 224 #define B_RESULT_NOT_REPRESENTABLE B_FROM_POSIX_ERROR(ERANGE) 225 #define B_DEVICE_NOT_FOUND B_FROM_POSIX_ERROR(ENODEV) 226 #define B_NOT_SUPPORTED B_FROM_POSIX_ERROR(EOPNOTSUPP) 227 228 /* Media Kit Errors */ 229 #define B_STREAM_NOT_FOUND (B_MEDIA_ERROR_BASE + 0) 230 #define B_SERVER_NOT_FOUND (B_MEDIA_ERROR_BASE + 1) 231 #define B_RESOURCE_NOT_FOUND (B_MEDIA_ERROR_BASE + 2) 232 #define B_RESOURCE_UNAVAILABLE (B_MEDIA_ERROR_BASE + 3) 233 #define B_BAD_SUBSCRIBER (B_MEDIA_ERROR_BASE + 4) 234 #define B_SUBSCRIBER_NOT_ENTERED (B_MEDIA_ERROR_BASE + 5) 235 #define B_BUFFER_NOT_AVAILABLE (B_MEDIA_ERROR_BASE + 6) 236 #define B_LAST_BUFFER_ERROR (B_MEDIA_ERROR_BASE + 7) 237 238 /* Mail Kit Errors */ 239 #define B_MAIL_NO_DAEMON (B_MAIL_ERROR_BASE + 0) 240 #define B_MAIL_UNKNOWN_USER (B_MAIL_ERROR_BASE + 1) 241 #define B_MAIL_WRONG_PASSWORD (B_MAIL_ERROR_BASE + 2) 242 #define B_MAIL_UNKNOWN_HOST (B_MAIL_ERROR_BASE + 3) 243 #define B_MAIL_ACCESS_ERROR (B_MAIL_ERROR_BASE + 4) 244 #define B_MAIL_UNKNOWN_FIELD (B_MAIL_ERROR_BASE + 5) 245 #define B_MAIL_NO_RECIPIENT (B_MAIL_ERROR_BASE + 6) 246 #define B_MAIL_INVALID_MAIL (B_MAIL_ERROR_BASE + 7) 247 248 /* Printing Errors */ 249 #define B_NO_PRINT_SERVER (B_PRINT_ERROR_BASE + 0) 250 251 /* Device Kit Errors */ 252 #define B_DEV_INVALID_IOCTL (B_DEVICE_ERROR_BASE + 0) 253 #define B_DEV_NO_MEMORY (B_DEVICE_ERROR_BASE + 1) 254 #define B_DEV_BAD_DRIVE_NUM (B_DEVICE_ERROR_BASE + 2) 255 #define B_DEV_NO_MEDIA (B_DEVICE_ERROR_BASE + 3) 256 #define B_DEV_UNREADABLE (B_DEVICE_ERROR_BASE + 4) 257 #define B_DEV_FORMAT_ERROR (B_DEVICE_ERROR_BASE + 5) 258 #define B_DEV_TIMEOUT (B_DEVICE_ERROR_BASE + 6) 259 #define B_DEV_RECALIBRATE_ERROR (B_DEVICE_ERROR_BASE + 7) 260 #define B_DEV_SEEK_ERROR (B_DEVICE_ERROR_BASE + 8) 261 #define B_DEV_ID_ERROR (B_DEVICE_ERROR_BASE + 9) 262 #define B_DEV_READ_ERROR (B_DEVICE_ERROR_BASE + 10) 263 #define B_DEV_WRITE_ERROR (B_DEVICE_ERROR_BASE + 11) 264 #define B_DEV_NOT_READY (B_DEVICE_ERROR_BASE + 12) 265 #define B_DEV_MEDIA_CHANGED (B_DEVICE_ERROR_BASE + 13) 266 #define B_DEV_MEDIA_CHANGE_REQUESTED (B_DEVICE_ERROR_BASE + 14) 267 #define B_DEV_RESOURCE_CONFLICT (B_DEVICE_ERROR_BASE + 15) 268 #define B_DEV_CONFIGURATION_ERROR (B_DEVICE_ERROR_BASE + 16) 269 #define B_DEV_DISABLED_BY_USER (B_DEVICE_ERROR_BASE + 17) 270 #define B_DEV_DOOR_OPEN (B_DEVICE_ERROR_BASE + 18) 271 272 #define B_DEV_INVALID_PIPE (B_DEVICE_ERROR_BASE + 19) 273 #define B_DEV_CRC_ERROR (B_DEVICE_ERROR_BASE + 20) 274 #define B_DEV_STALLED (B_DEVICE_ERROR_BASE + 21) 275 #define B_DEV_BAD_PID (B_DEVICE_ERROR_BASE + 22) 276 #define B_DEV_UNEXPECTED_PID (B_DEVICE_ERROR_BASE + 23) 277 #define B_DEV_DATA_OVERRUN (B_DEVICE_ERROR_BASE + 24) 278 #define B_DEV_DATA_UNDERRUN (B_DEVICE_ERROR_BASE + 25) 279 #define B_DEV_FIFO_OVERRUN (B_DEVICE_ERROR_BASE + 26) 280 #define B_DEV_FIFO_UNDERRUN (B_DEVICE_ERROR_BASE + 27) 281 #define B_DEV_PENDING (B_DEVICE_ERROR_BASE + 28) 282 #define B_DEV_MULTIPLE_ERRORS (B_DEVICE_ERROR_BASE + 29) 283 #define B_DEV_TOO_LATE (B_DEVICE_ERROR_BASE + 30) 284 285 286 #define B_TO_POSITIVE_ERROR(error) _to_positive_error(error) 287 #define B_TO_NEGATIVE_ERROR(error) _to_negative_error(error) 288 289 290 #ifdef __cplusplus 291 extern "C" { 292 #endif 293 294 int _to_positive_error(int error); 295 int _to_negative_error(int error); 296 297 #ifdef __cplusplus 298 } 299 #endif 300 301 #endif /* _ERRORS_H */ 302