| /** @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 <Base.h> | |
| /** | |
| 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_ |