/** @file Parse the contents of named fw_cfg files as simple (scalar) data types. Copyright (C) 2020, Red Hat, Inc. SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef QEMU_FW_CFG_SIMPLE_PARSER_LIB_H_ #define QEMU_FW_CFG_SIMPLE_PARSER_LIB_H_ #include /** Look up FileName with QemuFwCfgFindFile() from QemuFwCfgLib. Read the fw_cfg file into a small array with automatic storage duration. Parse the array as the textual representation of a BOOLEAN. @param[in] FileName The name of the fw_cfg file to look up and parse. @param[out] Value On success, Value is TRUE if the contents of the fw_cfg file case-insensitively match "true", "yes", "y", "enable", "enabled", "1". On success, Value is FALSE if the contents of the fw_cfg file case-insensitively match "false", "no", "n", "disable", "disabled", "0". On failure, Value is not changed. @retval RETURN_SUCCESS Parsing successful. Value has been set. @retval RETURN_UNSUPPORTED Firmware configuration is unavailable. @retval RETURN_PROTOCOL_ERROR Parsing failed. Value has not been changed. @return Error codes propagated from QemuFwCfgFindFile(). Value has not been changed. **/ RETURN_STATUS EFIAPI QemuFwCfgParseBool ( IN CONST CHAR8 *FileName, OUT BOOLEAN *Value ); /** Look up FileName with QemuFwCfgFindFile() from QemuFwCfgLib. Read the fw_cfg file into a small array with automatic storage duration. Parse the array as the textual representation of a UINT8. @param[in] FileName The name of the fw_cfg file to look up and parse. @param[in] ParseAsHex If TRUE, call BaseLib's AsciiStrHexToUint64S() for parsing the fw_cfg file. If FALSE, call BaseLib's AsciiStrDecimalToUint64S() for parsing the fw_cfg file. @param[out] Value On success, Value has been parsed with the BaseLib function determined by ParseAsHex, and also range-checked for [0, MAX_UINT8]. On failure, Value is not changed. @retval RETURN_SUCCESS Parsing successful. Value has been set. @retval RETURN_UNSUPPORTED Firmware configuration is unavailable. @retval RETURN_PROTOCOL_ERROR Parsing failed. Value has not been changed. @retval RETURN_PROTOCOL_ERROR Parsing succeeded, but the result does not fit in the [0, MAX_UINT8] range. Value has not been changed. @return Error codes propagated from QemuFwCfgFindFile() and from the BaseLib function selected by ParseAsHex. Value has not been changed. **/ RETURN_STATUS EFIAPI QemuFwCfgParseUint8 ( IN CONST CHAR8 *FileName, IN BOOLEAN ParseAsHex, OUT UINT8 *Value ); // // The following functions behave identically to QemuFwCfgParseUint8(), // only their range checks use MAX_UINT16, MAX_UINT32, MAX_UINT64, MAX_UINTN, // respectively. // RETURN_STATUS EFIAPI QemuFwCfgParseUint16 ( IN CONST CHAR8 *FileName, IN BOOLEAN ParseAsHex, OUT UINT16 *Value ); RETURN_STATUS EFIAPI QemuFwCfgParseUint32 ( IN CONST CHAR8 *FileName, IN BOOLEAN ParseAsHex, OUT UINT32 *Value ); RETURN_STATUS EFIAPI QemuFwCfgParseUint64 ( IN CONST CHAR8 *FileName, IN BOOLEAN ParseAsHex, OUT UINT64 *Value ); RETURN_STATUS EFIAPI QemuFwCfgParseUintn ( IN CONST CHAR8 *FileName, IN BOOLEAN ParseAsHex, OUT UINTN *Value ); #endif // QEMU_FW_CFG_SIMPLE_PARSER_LIB_H_