1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright 2023 Red Hat 4 */ 5 6 #ifndef UDS_ERRORS_H 7 #define UDS_ERRORS_H 8 9 #include <linux/compiler.h> 10 #include <linux/types.h> 11 12 /* Custom error codes and error-related utilities */ 13 #define VDO_SUCCESS 0 14 15 /* Valid status codes for internal UDS functions. */ 16 enum uds_status_codes { 17 /* Successful return */ 18 UDS_SUCCESS = VDO_SUCCESS, 19 /* Used as a base value for reporting internal errors */ 20 UDS_ERROR_CODE_BASE = 1024, 21 /* Index overflow */ 22 UDS_OVERFLOW = UDS_ERROR_CODE_BASE, 23 /* Invalid argument passed to internal routine */ 24 UDS_INVALID_ARGUMENT, 25 /* UDS data structures are in an invalid state */ 26 UDS_BAD_STATE, 27 /* Attempt to enter the same name into an internal structure twice */ 28 UDS_DUPLICATE_NAME, 29 /* An assertion failed */ 30 UDS_ASSERTION_FAILED, 31 /* A request has been queued for later processing (not an error) */ 32 UDS_QUEUED, 33 /* This error range has already been registered */ 34 UDS_ALREADY_REGISTERED, 35 /* Attempt to read or write data outside the valid range */ 36 UDS_OUT_OF_RANGE, 37 /* The index session is disabled */ 38 UDS_DISABLED, 39 /* The index configuration or volume format is no longer supported */ 40 UDS_UNSUPPORTED_VERSION, 41 /* Some index structure is corrupt */ 42 UDS_CORRUPT_DATA, 43 /* No index state found */ 44 UDS_NO_INDEX, 45 /* Attempt to access incomplete index save data */ 46 UDS_INDEX_NOT_SAVED_CLEANLY, 47 /* One more than the last UDS_INTERNAL error code */ 48 UDS_ERROR_CODE_LAST, 49 /* One more than the last error this block will ever use */ 50 UDS_ERROR_CODE_BLOCK_END = UDS_ERROR_CODE_BASE + 440, 51 }; 52 53 enum { 54 VDO_MAX_ERROR_NAME_SIZE = 80, 55 VDO_MAX_ERROR_MESSAGE_SIZE = 128, 56 }; 57 58 struct error_info { 59 const char *name; 60 const char *message; 61 }; 62 63 const char * __must_check uds_string_error(int errnum, char *buf, size_t buflen); 64 65 const char *uds_string_error_name(int errnum, char *buf, size_t buflen); 66 67 int uds_status_to_errno(int error); 68 69 int uds_register_error_block(const char *block_name, int first_error, 70 int last_reserved_error, const struct error_info *infos, 71 size_t info_size); 72 73 #endif /* UDS_ERRORS_H */ 74