| /* SPDX-License-Identifier: GPL-2.0-only */ |
| /* |
| * Copyright 2023 Red Hat |
| */ |
| |
| #ifndef UDS_ERRORS_H |
| #define UDS_ERRORS_H |
| |
| #include <linux/compiler.h> |
| #include <linux/types.h> |
| |
| /* Custom error codes and error-related utilities */ |
| #define VDO_SUCCESS 0 |
| |
| /* Valid status codes for internal UDS functions. */ |
| enum uds_status_codes { |
| /* Successful return */ |
| UDS_SUCCESS = VDO_SUCCESS, |
| /* Used as a base value for reporting internal errors */ |
| UDS_ERROR_CODE_BASE = 1024, |
| /* Index overflow */ |
| UDS_OVERFLOW = UDS_ERROR_CODE_BASE, |
| /* Invalid argument passed to internal routine */ |
| UDS_INVALID_ARGUMENT, |
| /* UDS data structures are in an invalid state */ |
| UDS_BAD_STATE, |
| /* Attempt to enter the same name into an internal structure twice */ |
| UDS_DUPLICATE_NAME, |
| /* An assertion failed */ |
| UDS_ASSERTION_FAILED, |
| /* A request has been queued for later processing (not an error) */ |
| UDS_QUEUED, |
| /* This error range has already been registered */ |
| UDS_ALREADY_REGISTERED, |
| /* Attempt to read or write data outside the valid range */ |
| UDS_OUT_OF_RANGE, |
| /* The index session is disabled */ |
| UDS_DISABLED, |
| /* The index configuration or volume format is no longer supported */ |
| UDS_UNSUPPORTED_VERSION, |
| /* Some index structure is corrupt */ |
| UDS_CORRUPT_DATA, |
| /* No index state found */ |
| UDS_NO_INDEX, |
| /* Attempt to access incomplete index save data */ |
| UDS_INDEX_NOT_SAVED_CLEANLY, |
| /* One more than the last UDS_INTERNAL error code */ |
| UDS_ERROR_CODE_LAST, |
| /* One more than the last error this block will ever use */ |
| UDS_ERROR_CODE_BLOCK_END = UDS_ERROR_CODE_BASE + 440, |
| }; |
| |
| enum { |
| VDO_MAX_ERROR_NAME_SIZE = 80, |
| VDO_MAX_ERROR_MESSAGE_SIZE = 128, |
| }; |
| |
| struct error_info { |
| const char *name; |
| const char *message; |
| }; |
| |
| const char * __must_check uds_string_error(int errnum, char *buf, size_t buflen); |
| |
| const char *uds_string_error_name(int errnum, char *buf, size_t buflen); |
| |
| int uds_status_to_errno(int error); |
| |
| int uds_register_error_block(const char *block_name, int first_error, |
| int last_reserved_error, const struct error_info *infos, |
| size_t info_size); |
| |
| #endif /* UDS_ERRORS_H */ |