[Sysman] Replace normal pointers with smart pointers (13/n)

Replacing normal pointers by smart pointers in scheduler module
of LO sysman(zesinit).

Related-To: LOCI-2810

Signed-off-by: Singh, Prasoon <prasoon.singh@intel.com>
This commit is contained in:
Singh, Prasoon
2023-04-10 11:01:37 +00:00
committed by Compute-Runtime-Automation
parent d0fb5a6e51
commit 0165f6158c
10 changed files with 24 additions and 48 deletions

View File

@@ -415,10 +415,10 @@ LinuxSchedulerImp::LinuxSchedulerImp(
this->listOfEngines = listOfEngines;
}
OsScheduler *OsScheduler::create(
std::unique_ptr<OsScheduler> OsScheduler::create(
OsSysman *pOsSysman, zes_engine_type_flag_t type, std::vector<std::string> &listOfEngines, ze_bool_t isSubdevice, uint32_t subdeviceId) {
LinuxSchedulerImp *pLinuxSchedulerImp = new LinuxSchedulerImp(pOsSysman, type, listOfEngines, isSubdevice, subdeviceId);
return static_cast<OsScheduler *>(pLinuxSchedulerImp);
std::unique_ptr<LinuxSchedulerImp> pLinuxSchedulerImp = std::make_unique<LinuxSchedulerImp>(pOsSysman, type, listOfEngines, isSubdevice, subdeviceId);
return pLinuxSchedulerImp;
}
} // namespace Sysman

View File

@@ -508,10 +508,10 @@ LinuxSchedulerImp::LinuxSchedulerImp(
this->listOfEngines = listOfEngines;
}
OsScheduler *OsScheduler::create(
std::unique_ptr<OsScheduler> OsScheduler::create(
OsSysman *pOsSysman, zes_engine_type_flag_t type, std::vector<std::string> &listOfEngines, ze_bool_t isSubdevice, uint32_t subdeviceId) {
LinuxSchedulerImp *pLinuxSchedulerImp = new LinuxSchedulerImp(pOsSysman, type, listOfEngines, isSubdevice, subdeviceId);
return static_cast<OsScheduler *>(pLinuxSchedulerImp);
std::unique_ptr<LinuxSchedulerImp> pLinuxSchedulerImp = std::make_unique<LinuxSchedulerImp>(pOsSysman, type, listOfEngines, isSubdevice, subdeviceId);
return pLinuxSchedulerImp;
}
} // namespace Sysman

View File

@@ -9,6 +9,7 @@
#include <level_zero/zes_api.h>
#include <map>
#include <memory>
#include <string>
#include <vector>
@@ -26,8 +27,8 @@ class OsScheduler {
virtual ze_result_t setExclusiveMode(ze_bool_t *pNeedReload) = 0;
virtual ze_result_t setComputeUnitDebugMode(ze_bool_t *pNeedReload) = 0;
virtual ze_result_t getProperties(zes_sched_properties_t &properties) = 0;
static OsScheduler *create(OsSysman *pOsSysman, zes_engine_type_flag_t engineType, std::vector<std::string> &listOfEngines,
ze_bool_t isSubdevice, uint32_t subdeviceId);
static std::unique_ptr<OsScheduler> create(OsSysman *pOsSysman, zes_engine_type_flag_t engineType, std::vector<std::string> &listOfEngines,
ze_bool_t isSubdevice, uint32_t subdeviceId);
static ze_result_t getNumEngineTypeAndInstances(std::map<zes_engine_type_flag_t, std::vector<std::string>> &listOfEngines,
OsSysman *pOsSysman, ze_bool_t onSubDevice, uint32_t subDeviceId);
virtual ~OsScheduler() = default;

View File

@@ -18,15 +18,12 @@ SchedulerHandleContext::SchedulerHandleContext(OsSysman *pOsSysman) {
}
SchedulerHandleContext::~SchedulerHandleContext() {
for (Scheduler *pScheduler : handleList) {
delete pScheduler;
}
handleList.clear();
}
void SchedulerHandleContext::createHandle(zes_engine_type_flag_t engineType, std::vector<std::string> &listOfEngines, ze_bool_t onSubDevice, uint32_t subDeviceId) {
Scheduler *pScheduler = new SchedulerImp(pOsSysman, engineType, listOfEngines, onSubDevice, subDeviceId);
handleList.push_back(pScheduler);
std::unique_ptr<Scheduler> pScheduler = std::make_unique<SchedulerImp>(pOsSysman, engineType, listOfEngines, onSubDevice, subDeviceId);
handleList.push_back(std::move(pScheduler));
}
void SchedulerHandleContext::init(uint32_t subDeviceCount) {

View File

@@ -44,7 +44,7 @@ struct SchedulerHandleContext : NEO::NonCopyableOrMovableClass {
ze_result_t schedulerGet(uint32_t *pCount, zes_sched_handle_t *phScheduler);
OsSysman *pOsSysman = nullptr;
std::vector<Scheduler *> handleList = {};
std::vector<std::unique_ptr<Scheduler>> handleList = {};
private:
void createHandle(zes_engine_type_flag_t engineType, std::vector<std::string> &listOfEngines, ze_bool_t onSubDevice, uint32_t subDeviceId);

View File

@@ -58,12 +58,7 @@ SchedulerImp::SchedulerImp(OsSysman *pOsSysman, zes_engine_type_flag_t engineTyp
init();
};
SchedulerImp::~SchedulerImp() {
if (nullptr != pOsScheduler) {
delete pOsScheduler;
pOsScheduler = nullptr;
}
}
SchedulerImp::~SchedulerImp() = default;
} // namespace Sysman
} // namespace L0

View File

@@ -28,7 +28,7 @@ class SchedulerImp : public Scheduler, NEO::NonCopyableOrMovableClass {
ze_result_t setComputeUnitDebugMode(ze_bool_t *pNeedReload) override;
SchedulerImp() = default;
OsScheduler *pOsScheduler = nullptr;
std::unique_ptr<OsScheduler> pOsScheduler;
SchedulerImp(OsSysman *pOsSysman, zes_engine_type_flag_t type, std::vector<std::string> &listOfEngines, ze_bool_t onSubDevice, uint32_t subDeviceId);
~SchedulerImp() override;

View File

@@ -49,10 +49,10 @@ ze_result_t OsScheduler::getNumEngineTypeAndInstances(std::map<zes_engine_type_f
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
}
OsScheduler *OsScheduler::create(
std::unique_ptr<OsScheduler> OsScheduler::create(
OsSysman *pOsSysman, zes_engine_type_flag_t type, std::vector<std::string> &listOfEngines, ze_bool_t isSubdevice, uint32_t subdeviceId) {
WddmSchedulerImp *pWddmSchedulerImp = new WddmSchedulerImp();
return static_cast<OsScheduler *>(pWddmSchedulerImp);
std::unique_ptr<WddmSchedulerImp> pWddmSchedulerImp = std::make_unique<WddmSchedulerImp>();
return pWddmSchedulerImp;
}
} // namespace Sysman

View File

@@ -55,10 +55,6 @@ class SysmanDeviceSchedulerFixture : public SysmanDeviceFixture {
pSysfsAccess->write(engineDir + "/" + engineName + "/" + heartbeatIntervalMilliSecs, heartbeatMilliSecs);
});
// delete handles created in initial SysmanDeviceHandleContext::init() call
for (auto handle : pSysmanDeviceImp->pSchedulerHandleContext->handleList) {
delete handle;
}
pSysmanDeviceImp->pSchedulerHandleContext->handleList.clear();
device = pSysmanDevice;
getSchedHandles(0);
@@ -622,10 +618,8 @@ TEST_F(SysmanDeviceSchedulerFixture, GivenValidDeviceHandleWhenCallingzesSchedul
TEST_F(SysmanDeviceSchedulerFixture, GivenValidObjectsOfClassSchedulerImpAndSchedulerHandleContextThenDuringObjectReleaseCheckDestructorBranches) {
for (auto &handle : pSysmanDeviceImp->pSchedulerHandleContext->handleList) {
auto pSchedulerImp = static_cast<L0::Sysman::SchedulerImp *>(handle);
delete pSchedulerImp->pOsScheduler;
auto pSchedulerImp = static_cast<L0::Sysman::SchedulerImp *>(handle.get());
pSchedulerImp->pOsScheduler = nullptr;
delete handle;
handle = nullptr;
}
}

View File

@@ -64,10 +64,6 @@ class SysmanDeviceSchedulerFixture : public SysmanDeviceFixture {
pSysfsAccess->setFileProperties(dummy, enableEuDebug, true, S_IRUSR | S_IRGRP | S_IROTH | S_IWUSR);
pSysfsAccess->write(enableEuDebug, 0);
// delete handles created in initial SysmanDeviceHandleContext::init() call
for (auto handle : pSysmanDeviceImp->pSchedulerHandleContext->handleList) {
delete handle;
}
pSysmanDeviceImp->pSchedulerHandleContext->handleList.clear();
device = pSysmanDevice;
getSchedHandles(0);
@@ -108,7 +104,7 @@ class SysmanDeviceSchedulerFixture : public SysmanDeviceFixture {
void setComputeUnitDebugModeMock(zes_sched_handle_t hScheduler) {
auto pSchedulerImp = static_cast<L0::Sysman::SchedulerImp *>(L0::Sysman::Scheduler::fromHandle(hScheduler));
auto pOsScheduler = static_cast<PublicLinuxSchedulerImp *>(pSchedulerImp->pOsScheduler);
auto pOsScheduler = static_cast<PublicLinuxSchedulerImp *>((pSchedulerImp->pOsScheduler).get());
EXPECT_EQ(ZE_RESULT_SUCCESS, pOsScheduler->setExclusiveModeImp());
uint64_t val = 1;
@@ -167,7 +163,7 @@ TEST_F(SysmanDeviceSchedulerFixture, GivenValidDeviceHandleWhenCallingzesSchedul
TEST_F(SysmanDeviceSchedulerFixture, GivenSomeInvalidSchedulerModeWhenCheckingForCurrentModeThenAPIReportUnknownMode) {
auto handles = getSchedHandles(handleComponentCount);
auto pSchedulerImp = static_cast<L0::Sysman::SchedulerImp *>(L0::Sysman::Scheduler::fromHandle(handles[0]));
auto pOsScheduler = static_cast<PublicLinuxSchedulerImp *>(pSchedulerImp->pOsScheduler);
auto pOsScheduler = static_cast<PublicLinuxSchedulerImp *>((pSchedulerImp->pOsScheduler).get());
uint64_t timeslice = 0, timeout = 0, heartbeat = 3000;
pOsScheduler->setPreemptTimeout(timeout);
pOsScheduler->setTimesliceDuration(timeslice);
@@ -607,7 +603,7 @@ TEST_F(SysmanDeviceSchedulerFixture, GivenHeartBeatIntervalFileNotPresentWhenSet
auto handles = getSchedHandles(handleComponentCount);
auto pSchedulerImp = static_cast<L0::Sysman::SchedulerImp *>(L0::Sysman::Scheduler::fromHandle(handles[0]));
auto pOsScheduler = static_cast<PublicLinuxSchedulerImp *>(pSchedulerImp->pOsScheduler);
auto pOsScheduler = static_cast<PublicLinuxSchedulerImp *>((pSchedulerImp->pOsScheduler).get());
EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, pOsScheduler->setHeartbeatInterval(2000));
}
@@ -821,7 +817,7 @@ TEST_F(SysmanDeviceSchedulerFixture, DISABLED_GivenEuDebugNodeWriteFailsWhenCall
TEST_F(SysmanDeviceSchedulerFixture, GivenNodeRequiredToEnableEuDebugNotPresentWhenCheckingForDebugModeThenCallReturnsFalse) {
auto handles = getSchedHandles(handleComponentCount);
auto pSchedulerImp = static_cast<L0::Sysman::SchedulerImp *>(L0::Sysman::Scheduler::fromHandle(handles[0]));
auto pOsScheduler = static_cast<PublicLinuxSchedulerImp *>(pSchedulerImp->pOsScheduler);
auto pOsScheduler = static_cast<PublicLinuxSchedulerImp *>((pSchedulerImp->pOsScheduler).get());
std::string dummy;
pSysfsAccess->setFileProperties(dummy, enableEuDebug, false, S_IRUSR | S_IRGRP | S_IROTH | S_IWUSR);
EXPECT_FALSE(pOsScheduler->isComputeUnitDebugModeEnabled());
@@ -939,10 +935,8 @@ TEST_F(SysmanDeviceSchedulerFixture, GivenValidDeviceHandleWhenCallingzesSchedul
TEST_F(SysmanDeviceSchedulerFixture, GivenValidObjectsOfClassSchedulerImpAndSchedulerHandleContextThenDuringObjectReleaseCheckDestructorBranches) {
for (auto &handle : pSysmanDeviceImp->pSchedulerHandleContext->handleList) {
auto pSchedulerImp = static_cast<L0::Sysman::SchedulerImp *>(handle);
delete pSchedulerImp->pOsScheduler;
auto pSchedulerImp = static_cast<L0::Sysman::SchedulerImp *>(handle.get());
pSchedulerImp->pOsScheduler = nullptr;
delete handle;
handle = nullptr;
}
}
@@ -973,11 +967,6 @@ class SysmanMultiDeviceSchedulerFixture : public SysmanMultiDeviceFixture {
auto &osInterface = pSysmanDeviceImp->getRootDeviceEnvironment().osInterface;
osInterface->setDriverModel(std::unique_ptr<MockSchedulerNeoDrm>(pDrm));
// delete handles created in initial SysmanDeviceHandleContext::init() call
for (auto handle : pSysmanDeviceImp->pSchedulerHandleContext->handleList) {
delete handle;
}
pSysmanDeviceImp->pSchedulerHandleContext->handleList.clear();
device = pSysmanDevice;
auto drm = pSysmanDeviceImp->getRootDeviceEnvironment().osInterface->getDriverModel()->as<NEO::Drm>();
@@ -999,7 +988,7 @@ class SysmanMultiDeviceSchedulerFixture : public SysmanMultiDeviceFixture {
TEST_F(SysmanMultiDeviceSchedulerFixture, GivenValidSchedulerHandleContextWhenInitializingForIncorrectDistanceInfoVerifyInvalidEngineTypeIsNotReturned) {
auto pSchedulerHandleContextTest = std::make_unique<L0::Sysman::SchedulerHandleContext>(pOsSysman);
pSchedulerHandleContextTest->init(pOsSysman->getSubDeviceCount());
for (auto handle : pSchedulerHandleContextTest->handleList) {
for (auto &handle : pSchedulerHandleContextTest->handleList) {
zes_sched_properties_t properties = {};
ze_result_t result = zesSchedulerGetProperties(handle->toHandle(), &properties);
EXPECT_EQ(ZE_RESULT_SUCCESS, result);