// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later #ifndef LIBPLDM_SRC_API_H #define LIBPLDM_SRC_API_H #include #include #include /** * @brief Translate a negative errno value to a PLDM completion code * * Existing stable APIs often return errors in the form of PLDM completion * codes, which confuses the problems of the protocol with the problems of * the implementation. We're shifting to using negative errno values to signal * implementation errors. However, for existing stable APIs, provide a means to * translate between the two. * * @param[in] err - The negative errno to translate to a completion code * * @return An equivalent PLDM completion code for @p err */ static inline enum pldm_completion_codes pldm_xlate_errno(int err) { enum pldm_completion_codes rc; assert(err < 0); switch (err) { case -EINVAL: rc = PLDM_ERROR_INVALID_DATA; break; case -ENOMSG: rc = PLDM_ERROR_INVALID_PLDM_TYPE; break; default: assert(false); rc = PLDM_ERROR; break; } assert(rc > 0); return rc; } #endif