Pull Request已成功合入, 合并人@openeuler-ci-bot
(感谢 朱程成 的贡献)变更摘要
该 PR 为仿真(QEMU 虚拟机)环境提供部署环境识别能力:新增从 SMBIOS Type 1 结构解析系统制造商(Manufacturer)的接口 GetSystemManufacturer,并在通信引擎初始化时依据制造商是否为 QEMU 决定是否启用 hcom 主备倒换能力——仿真环境关闭该能力,物理机环境则开启。此前的 SMBIOS Type 1 解析仅返回"不支持"(UBSE_ERR_NOT_SUPPORTED),本 PR 将其落地为真实的字符串表解析实现。
主要改动
-
新增制造商获取接口
GetSystemManufacturer:在UbseSmbios中新增GetSystemManufacturer(std::string& manufacturer),通过UbseSmbiosImpl获取 SMBIOS Type 1 信息,若信息为空或制造商为空则返回UBSE_ERROR,成功时返回UBSE_OK,并在ubse_smbios.h中补充接口声明。 -
实现 SMBIOS Type 1 的 Manufacturer 字段解析:
SmbiosStructureType1::FillSmbiosStructFromBuf由原先直接返回UBSE_ERR_NOT_SUPPORTED改为真实解析——校验数据非空及长度足够后,读取偏移0x04处的字符串编号,通过GetSmbiosString从字符串表中取出厂商名,并将LogSmbiosStructTypeInfo的日志级别由WARN调整为INFO输出制造商信息。 -
manufacturer字段类型改为std::string:SmbiosStructureType1的manufacturer由定长std::array<char, TYPE_1_MAX_LEN>改为std::string,以适配动态长度的字符串表解析结果。 -
根据制造商动态配置 hcom 主备倒换:
UbseComEngine::InitEngineOptions中原先固定SetActiveBackup(false),现改为调用GetSystemManufacturer获取制造商,若获取失败或制造商为新增常量QEMU_SYSTEM_MANUFACTURER(定义于ubse_common_def.h,值为"QEMU")则关闭主备倒换,否则开启。 -
补充单元测试:
test_ubse_smbios.cpp新增MakeSystemInfo构造辅助函数及多组用例,覆盖 Type 1 厂商字符串解码(含第二字符串、空字符串编号、缺失字符串、结构过短等异常场景)以及GetSystemManufacturer的成功/失败路径,并删除原先断言"不支持"的旧用例。


/lgtm


当前PR是否有AI参与:
[x] 否
[ ] 是
__1. AI Agent 平台:
__2. AI 模型:
__3. Prompt上下文 :
参考:openEuler社区《生成式AI工具使用与开源贡献政策》
PR功能描述 / 为什么需要这个合入**:
该PR关联的issue
(格式为fixes #<issue号>, 或者resolves #<issue号>): fixes #
希望检视人员了解: