diff options
Diffstat (limited to 'include/cpu.hpp')
-rw-r--r-- | include/cpu.hpp | 82 |
1 files changed, 49 insertions, 33 deletions
diff --git a/include/cpu.hpp b/include/cpu.hpp index 08204da..953c549 100644 --- a/include/cpu.hpp +++ b/include/cpu.hpp @@ -15,15 +15,31 @@ */ #pragma once -#include <xyz/openbmc_project/Inventory/Item/Cpu/server.hpp> #include "smbios.hpp" + +#include <xyz/openbmc_project/Association/Definitions/server.hpp> +#include <xyz/openbmc_project/Inventory/Connector/Slot/server.hpp> +#include <xyz/openbmc_project/Inventory/Decorator/Asset/server.hpp> +#include <xyz/openbmc_project/Inventory/Decorator/LocationCode/server.hpp> +#include <xyz/openbmc_project/Inventory/Decorator/Revision/server.hpp> +#include <xyz/openbmc_project/Inventory/Item/Cpu/server.hpp> +#include <xyz/openbmc_project/Inventory/Item/server.hpp> + namespace phosphor { namespace smbios { +using rev = sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::Revision; +using asset = sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::Asset; +using location = sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::LocationCode; +using connector = sdbusplus::xyz::openbmc_project::Inventory::Connector::server::Slot; +using processor = sdbusplus::xyz::openbmc_project::Inventory::Item::server::Cpu; +using Item = sdbusplus::xyz::openbmc_project::Inventory::server::Item; +using association = sdbusplus::xyz::openbmc_project::Association::server::Definitions; + // Definition follow smbios spec DSP0134 3.0.0 static const std::map<uint8_t, std::string> cpuTypeTable = { {0x1, "Other"}, {0x2, "Unknown"}, {0x3, "Central Processor"}, @@ -67,25 +83,26 @@ static const std::map<uint8_t, std::string> familyTable = { }; // Definition follow smbios spec DSP0134 3.0.0 -static const std::string characterTable[16]{"Reserved", - "Unknown", - "64-bit Capable", - "Multi-Core", - "Hardware Thread", - "Execute Protection", - "Enhanced Virtualization", - "Power/Performance Control", - "Reserved", - "Reserved", - "Reserved", - "Reserved", - "Reserved", - "Reserved", - "Reserved", - "Reserved"}; - -class Cpu : sdbusplus::server::object::object< - sdbusplus::xyz::openbmc_project::Inventory::Item::server::Cpu> +static const std::array<std::optional<processor::Capability>, 16> + characteristicsTable{std::nullopt, + std::nullopt, + processor::Capability::Capable64bit, + processor::Capability::MultiCore, + processor::Capability::HardwareThread, + processor::Capability::ExecuteProtection, + processor::Capability::EnhancedVirtualization, + processor::Capability::PowerPerformanceControl, + std::nullopt, + std::nullopt, + std::nullopt, + std::nullopt, + std::nullopt, + std::nullopt, + std::nullopt, + std::nullopt}; + +class Cpu : sdbusplus::server::object_t<processor, asset, location, connector, rev, + Item, association> { public: Cpu() = delete; @@ -98,9 +115,8 @@ class Cpu : sdbusplus::server::object::object< Cpu(sdbusplus::bus::bus &bus, const std::string &objPath, const uint8_t &cpuId, struct ManagedDataRegion *region) : - sdbusplus::server::object::object< - sdbusplus::xyz::openbmc_project::Inventory::Item::server::Cpu>( - bus, objPath.c_str()), + sdbusplus::server::object_t<processor, asset, location, connector, rev, + Item, association>(bus, objPath.c_str()), cpuNum(cpuId), regionS(region) { processorInfoUpdate(); @@ -108,16 +124,16 @@ class Cpu : sdbusplus::server::object::object< void processorInfoUpdate(void); - std::string processorSocket(std::string value) override; - std::string processorType(std::string value) override; - std::string processorFamily(std::string value) override; - std::string processorManufacturer(std::string value) override; - uint32_t processorId(uint32_t value) override; - std::string processorVersion(std::string value) override; - uint16_t processorMaxSpeed(uint16_t value) override; - std::string processorCharacteristics(std::string value) override; - uint16_t processorCoreCount(uint16_t value) override; - uint16_t processorThreadCount(uint16_t value) override; + std::string processorSocket(std::string value); + std::string processorType(std::string value); + std::string processorFamily(std::string value); + std::string processorManufacturer(std::string value); + uint32_t processorId(uint32_t value); + std::string processorVersion(std::string value); + uint16_t processorMaxSpeed(uint16_t value); + std::string processorCharacteristics(std::string value) ; + uint16_t processorCoreCount(uint16_t value); + uint16_t processorThreadCount(uint16_t value); private: /** @brief Path of the group instance */ |