/* 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 */