summaryrefslogtreecommitdiff
path: root/include/cpu.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/cpu.hpp')
-rw-r--r--include/cpu.hpp82
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 */