Retrieve Temperature for multiple sensors

Create two handles for Global and Compute temperature
sensors.

Change-Id: I5da90135a803df71372c9c4be9dc891ca64fc214
Signed-off-by: Jitendra Sharma <jitendra.sharma@intel.com>
This commit is contained in:
Jitendra Sharma
2020-06-06 14:42:23 +05:30
committed by sys_ocldev
parent b354dfe32c
commit b558c9ca30
9 changed files with 31 additions and 1 deletions

View File

@@ -17,6 +17,10 @@ bool LinuxTemperatureImp::isTempModuleSupported() {
return false;
}
void LinuxTemperatureImp::setSensorType(zet_temp_sensors_t sensorType) {
type = sensorType;
}
LinuxTemperatureImp::LinuxTemperatureImp(OsSysman *pOsSysman) {
LinuxSysmanImp *pLinuxSysmanImp = static_cast<LinuxSysmanImp *>(pOsSysman);
pSysfsAccess = &pLinuxSysmanImp->getSysfsAccess();

View File

@@ -18,11 +18,13 @@ class LinuxTemperatureImp : public OsTemperature, public NEO::NonCopyableClass {
public:
ze_result_t getSensorTemperature(double *pTemperature) override;
bool isTempModuleSupported() override;
void setSensorType(zet_temp_sensors_t sensorType) override;
LinuxTemperatureImp(OsSysman *pOsSysman);
LinuxTemperatureImp() = default;
~LinuxTemperatureImp() override = default;
protected:
SysfsAccess *pSysfsAccess = nullptr;
zet_temp_sensors_t type;
};
} // namespace L0

View File

@@ -16,6 +16,7 @@ class OsTemperature {
public:
virtual ze_result_t getSensorTemperature(double *pTemperature) = 0;
virtual bool isTempModuleSupported() = 0;
virtual void setSensorType(zet_temp_sensors_t sensorType) = 0;
static OsTemperature *create(OsSysman *pOsSysman);
virtual ~OsTemperature() = default;
};

View File

@@ -17,8 +17,9 @@ TemperatureHandleContext::~TemperatureHandleContext() {
}
}
void TemperatureHandleContext::init() {
void TemperatureHandleContext::createHandle(zet_temp_sensors_t type) {
Temperature *pTemperature = new TemperatureImp(pOsSysman);
pTemperature->sensorType = type;
if (pTemperature->initSuccess == true) {
handleList.push_back(pTemperature);
} else {
@@ -26,6 +27,11 @@ void TemperatureHandleContext::init() {
}
}
void TemperatureHandleContext::init() {
createHandle(ZET_TEMP_SENSORS_GLOBAL);
createHandle(ZET_TEMP_SENSORS_GPU);
}
ze_result_t TemperatureHandleContext::temperatureGet(uint32_t *pCount, zet_sysman_temp_handle_t *phTemperature) {
if (nullptr == phTemperature) {
*pCount = static_cast<uint32_t>(handleList.size());

View File

@@ -29,6 +29,7 @@ class Temperature : _zet_sysman_temp_handle_t {
}
inline zet_sysman_temp_handle_t toHandle() { return this; }
bool initSuccess = false;
zet_temp_sensors_t sensorType;
};
struct TemperatureHandleContext {
@@ -41,6 +42,9 @@ struct TemperatureHandleContext {
OsSysman *pOsSysman = nullptr;
std::vector<Temperature *> handleList;
private:
void createHandle(zet_temp_sensors_t type);
};
} // namespace L0

View File

@@ -29,6 +29,7 @@ ze_result_t TemperatureImp::temperatureGetState(double *pTemperature) {
void TemperatureImp::init() {
this->initSuccess = pOsTemperature->isTempModuleSupported();
pOsTemperature->setSensorType(this->sensorType);
}
TemperatureImp::TemperatureImp(OsSysman *pOsSysman) {

View File

@@ -13,6 +13,7 @@ class WddmTemperatureImp : public OsTemperature {
public:
ze_result_t getSensorTemperature(double *pTemperature) override;
bool isTempModuleSupported() override;
void setSensorType(zet_temp_sensors_t sensorType) override;
};
ze_result_t WddmTemperatureImp::getSensorTemperature(double *pTemperature) {
@@ -23,6 +24,8 @@ bool WddmTemperatureImp::isTempModuleSupported() {
return false;
}
void WddmTemperatureImp::setSensorType(zet_temp_sensors_t sensorType) {}
OsTemperature *OsTemperature::create(OsSysman *pOsSysman) {
WddmTemperatureImp *pWddmTemperatureImp = new WddmTemperatureImp();
return static_cast<OsTemperature *>(pWddmTemperatureImp);