diff --git a/level_zero/sysman/source/engine/engine.cpp b/level_zero/sysman/source/engine/engine.cpp index 9f8edfb376..a9c8fb09be 100644 --- a/level_zero/sysman/source/engine/engine.cpp +++ b/level_zero/sysman/source/engine/engine.cpp @@ -25,11 +25,9 @@ EngineHandleContext::~EngineHandleContext() { } void EngineHandleContext::createHandle(zes_engine_group_t engineType, uint32_t engineInstance, uint32_t subDeviceId, ze_bool_t onSubdevice) { - Engine *pEngine = new EngineImp(pOsSysman, engineType, engineInstance, subDeviceId, onSubdevice); + std::unique_ptr pEngine = std::make_unique(pOsSysman, engineType, engineInstance, subDeviceId, onSubdevice); if (pEngine->initSuccess == true) { - handleList.push_back(pEngine); - } else { - delete pEngine; + handleList.push_back(std::move(pEngine)); } } @@ -47,9 +45,6 @@ void EngineHandleContext::init(uint32_t subDeviceCount) { } void EngineHandleContext::releaseEngines() { - for (Engine *pEngine : handleList) { - delete pEngine; - } handleList.clear(); } diff --git a/level_zero/sysman/source/engine/engine.h b/level_zero/sysman/source/engine/engine.h index 2a23b4bf16..1838ec8fd1 100644 --- a/level_zero/sysman/source/engine/engine.h +++ b/level_zero/sysman/source/engine/engine.h @@ -40,7 +40,7 @@ struct EngineHandleContext { ze_result_t engineGet(uint32_t *pCount, zes_engine_handle_t *phEngine); OsSysman *pOsSysman = nullptr; - std::vector handleList = {}; + std::vector> handleList = {}; bool isEngineInitDone() { return engineInitDone; } diff --git a/level_zero/sysman/source/engine/engine_imp.cpp b/level_zero/sysman/source/engine/engine_imp.cpp index bf439f4ad5..04bc06bdd9 100644 --- a/level_zero/sysman/source/engine/engine_imp.cpp +++ b/level_zero/sysman/source/engine/engine_imp.cpp @@ -31,12 +31,7 @@ EngineImp::EngineImp(OsSysman *pOsSysman, zes_engine_group_t engineType, uint32_ init(); } -EngineImp::~EngineImp() { - if (nullptr != pOsEngine) { - delete pOsEngine; - pOsEngine = nullptr; - } -} +EngineImp::~EngineImp() = default; } // namespace Sysman } // namespace L0 diff --git a/level_zero/sysman/source/engine/engine_imp.h b/level_zero/sysman/source/engine/engine_imp.h index 9c94d99534..1b8a2892a0 100644 --- a/level_zero/sysman/source/engine/engine_imp.h +++ b/level_zero/sysman/source/engine/engine_imp.h @@ -24,7 +24,7 @@ class EngineImp : public Engine, NEO::NonCopyableOrMovableClass { EngineImp(OsSysman *pOsSysman, zes_engine_group_t engineType, uint32_t engineInstance, uint32_t subDeviceId, ze_bool_t onSubdevice); ~EngineImp() override; - OsEngine *pOsEngine = nullptr; + std::unique_ptr pOsEngine; void init(); private: diff --git a/level_zero/sysman/source/engine/linux/os_engine_imp.cpp b/level_zero/sysman/source/engine/linux/os_engine_imp.cpp index aea765041d..97b545a6e7 100644 --- a/level_zero/sysman/source/engine/linux/os_engine_imp.cpp +++ b/level_zero/sysman/source/engine/linux/os_engine_imp.cpp @@ -104,9 +104,9 @@ LinuxEngineImp::LinuxEngineImp(OsSysman *pOsSysman, zes_engine_group_t type, uin init(); } -OsEngine *OsEngine::create(OsSysman *pOsSysman, zes_engine_group_t type, uint32_t engineInstance, uint32_t subDeviceId, ze_bool_t onSubDevice) { - LinuxEngineImp *pLinuxEngineImp = new LinuxEngineImp(pOsSysman, type, engineInstance, subDeviceId, onSubDevice); - return static_cast(pLinuxEngineImp); +std::unique_ptr OsEngine::create(OsSysman *pOsSysman, zes_engine_group_t type, uint32_t engineInstance, uint32_t subDeviceId, ze_bool_t onSubDevice) { + std::unique_ptr pLinuxEngineImp = std::make_unique(pOsSysman, type, engineInstance, subDeviceId, onSubDevice); + return pLinuxEngineImp; } } // namespace Sysman diff --git a/level_zero/sysman/source/engine/linux/os_engine_imp_prelim.cpp b/level_zero/sysman/source/engine/linux/os_engine_imp_prelim.cpp index 36fd861c21..0524a4fc6c 100644 --- a/level_zero/sysman/source/engine/linux/os_engine_imp_prelim.cpp +++ b/level_zero/sysman/source/engine/linux/os_engine_imp_prelim.cpp @@ -143,9 +143,9 @@ LinuxEngineImp::LinuxEngineImp(OsSysman *pOsSysman, zes_engine_group_t type, uin init(); } -OsEngine *OsEngine::create(OsSysman *pOsSysman, zes_engine_group_t type, uint32_t engineInstance, uint32_t subDeviceId, ze_bool_t onSubDevice) { - LinuxEngineImp *pLinuxEngineImp = new LinuxEngineImp(pOsSysman, type, engineInstance, subDeviceId, onSubDevice); - return static_cast(pLinuxEngineImp); +std::unique_ptr OsEngine::create(OsSysman *pOsSysman, zes_engine_group_t type, uint32_t engineInstance, uint32_t subDeviceId, ze_bool_t onSubDevice) { + std::unique_ptr pLinuxEngineImp = std::make_unique(pOsSysman, type, engineInstance, subDeviceId, onSubDevice); + return pLinuxEngineImp; } } // namespace Sysman diff --git a/level_zero/sysman/source/engine/os_engine.h b/level_zero/sysman/source/engine/os_engine.h index eaccd02760..6a0d0771bc 100644 --- a/level_zero/sysman/source/engine/os_engine.h +++ b/level_zero/sysman/source/engine/os_engine.h @@ -22,7 +22,7 @@ class OsEngine { virtual ze_result_t getActivity(zes_engine_stats_t *pStats) = 0; virtual ze_result_t getProperties(zes_engine_properties_t &properties) = 0; virtual bool isEngineModuleSupported() = 0; - static OsEngine *create(OsSysman *pOsSysman, zes_engine_group_t engineType, uint32_t engineInstance, uint32_t subDeviceId, ze_bool_t onSubdevice); + static std::unique_ptr create(OsSysman *pOsSysman, zes_engine_group_t engineType, uint32_t engineInstance, uint32_t subDeviceId, ze_bool_t onSubdevice); static ze_result_t getNumEngineTypeAndInstances(std::set> &engineGroupInstance, OsSysman *pOsSysman); virtual ~OsEngine() = default; }; diff --git a/level_zero/sysman/source/engine/windows/os_engine_imp.cpp b/level_zero/sysman/source/engine/windows/os_engine_imp.cpp index ee7d94d728..c413fb075f 100644 --- a/level_zero/sysman/source/engine/windows/os_engine_imp.cpp +++ b/level_zero/sysman/source/engine/windows/os_engine_imp.cpp @@ -10,9 +10,9 @@ namespace L0 { namespace Sysman { -OsEngine *OsEngine::create(OsSysman *pOsSysman, zes_engine_group_t engineType, uint32_t engineInstance, uint32_t subDeviceId, ze_bool_t onSubDevice) { - WddmEngineImp *pWddmEngineImp = new WddmEngineImp(pOsSysman, engineType, engineInstance, subDeviceId); - return static_cast(pWddmEngineImp); +std::unique_ptr OsEngine::create(OsSysman *pOsSysman, zes_engine_group_t engineType, uint32_t engineInstance, uint32_t subDeviceId, ze_bool_t onSubDevice) { + std::unique_ptr pWddmEngineImp = std::make_unique(pOsSysman, engineType, engineInstance, subDeviceId); + return pWddmEngineImp; } ze_result_t OsEngine::getNumEngineTypeAndInstances(std::set> &engineGroupInstance, OsSysman *pOsSysman) { diff --git a/level_zero/sysman/test/unit_tests/sources/engine/linux/test_zes_engine.cpp b/level_zero/sysman/test/unit_tests/sources/engine/linux/test_zes_engine.cpp index 7eb8dbfc9b..b3ae7245d2 100644 --- a/level_zero/sysman/test/unit_tests/sources/engine/linux/test_zes_engine.cpp +++ b/level_zero/sysman/test/unit_tests/sources/engine/linux/test_zes_engine.cpp @@ -45,10 +45,6 @@ class ZesEngineFixture : public SysmanDeviceFixture { pLinuxSysmanImp->pPmuInterface = pPmuInterface.get(); pFsAccess->mockReadVal = 23; - for (auto handle : pSysmanDeviceImp->pEngineHandleContext->handleList) { - delete handle; - } - pSysmanDeviceImp->pEngineHandleContext->handleList.clear(); pSysmanDeviceImp->getRootDeviceEnvironment().getMutableHardwareInfo()->capabilityTable.isIntegratedDevice = true; device = pSysmanDevice; @@ -151,8 +147,6 @@ TEST_F(ZesEngineFixture, GivenTestDiscreteDevicesAndValidEngineHandleWhenCalling auto pOsEngineTest2 = L0::Sysman::OsEngine::create(pOsSysman, ZES_ENGINE_GROUP_RENDER_SINGLE, 0u, 0u, false); EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, pOsEngineTest2->getActivity(&stats)); - delete pOsEngineTest1; - delete pOsEngineTest2; } TEST_F(ZesEngineFixture, GivenTestIntegratedDevicesAndValidEngineHandleWhenCallingZesEngineGetActivityAndPMUGetEventTypeFailsThenVerifyEngineGetActivityReturnsFailure) { @@ -162,7 +156,6 @@ TEST_F(ZesEngineFixture, GivenTestIntegratedDevicesAndValidEngineHandleWhenCalli auto pOsEngineTest1 = L0::Sysman::OsEngine::create(pOsSysman, ZES_ENGINE_GROUP_RENDER_SINGLE, 0u, 0u, false); EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, pOsEngineTest1->getActivity(&stats)); - delete pOsEngineTest1; } TEST_F(ZesEngineFixture, GivenValidEngineHandleWhenCallingZesEngineGetActivityAndPmuReadFailsThenVerifyEngineGetActivityReturnsFailure) { diff --git a/level_zero/sysman/test/unit_tests/sources/engine/linux/test_zes_engine_prelim.cpp b/level_zero/sysman/test/unit_tests/sources/engine/linux/test_zes_engine_prelim.cpp index ad7d6a328b..f702563c56 100644 --- a/level_zero/sysman/test/unit_tests/sources/engine/linux/test_zes_engine_prelim.cpp +++ b/level_zero/sysman/test/unit_tests/sources/engine/linux/test_zes_engine_prelim.cpp @@ -48,10 +48,6 @@ class ZesEngineFixture : public SysmanDeviceFixture { pOriginalPmuInterface = pLinuxSysmanImp->pPmuInterface; pLinuxSysmanImp->pPmuInterface = pPmuInterface.get(); - for (auto handle : pSysmanDeviceImp->pEngineHandleContext->handleList) { - delete handle; - } - pSysmanDeviceImp->pEngineHandleContext->handleList.clear(); pSysmanDeviceImp->getRootDeviceEnvironment().getMutableHardwareInfo()->capabilityTable.isIntegratedDevice = true; device = pSysmanDevice; @@ -185,8 +181,6 @@ TEST_F(ZesEngineFixture, GivenTestDiscreteDevicesAndValidEngineHandleWhenCalling auto pOsEngineTest2 = L0::Sysman::OsEngine::create(pOsSysman, ZES_ENGINE_GROUP_RENDER_SINGLE, 0u, 0u, false); EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, pOsEngineTest2->getActivity(&stats)); - delete pOsEngineTest1; - delete pOsEngineTest2; } TEST_F(ZesEngineFixture, GivenUnknownEngineTypeThengetEngineGroupFromTypeReturnsGroupAllEngineGroup) { @@ -201,7 +195,6 @@ TEST_F(ZesEngineFixture, GivenTestIntegratedDevicesAndValidEngineHandleWhenCalli auto pOsEngineTest1 = L0::Sysman::OsEngine::create(pOsSysman, ZES_ENGINE_GROUP_RENDER_SINGLE, 0u, 0u, false); EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, pOsEngineTest1->getActivity(&stats)); - delete pOsEngineTest1; } TEST_F(ZesEngineFixture, GivenValidEngineHandleWhenCallingZesEngineGetActivityAndPmuReadFailsThenVerifyEngineGetActivityReturnsFailure) { @@ -245,10 +238,6 @@ TEST_F(ZesEngineFixture, GivenHandleQueryItemCalledWhenPmuInterfaceOpenFailsThen pFsAccess->mockReadVal = true; - for (auto handle : pSysmanDeviceImp->pEngineHandleContext->handleList) { - delete handle; - } - pSysmanDeviceImp->pEngineHandleContext->handleList.clear(); pSysmanDeviceImp->pEngineHandleContext->init(pOsSysman->getSubDeviceCount()); uint32_t count = 0; @@ -270,9 +259,6 @@ TEST_F(ZesEngineFixture, GivenValidEngineHandleAndHandleCountZeroWhenCallingReIn EXPECT_EQ(ZE_RESULT_SUCCESS, zesDeviceEnumEngineGroups(device->toHandle(), &count, NULL)); EXPECT_EQ(count, handleComponentCount); - for (auto handle : pSysmanDeviceImp->pEngineHandleContext->handleList) { - delete handle; - } pSysmanDeviceImp->pEngineHandleContext->handleList.clear(); pSysmanDeviceImp->pEngineHandleContext->init(pOsSysman->getSubDeviceCount()); @@ -313,10 +299,6 @@ class ZesEngineMultiFixture : public SysmanMultiDeviceFixture { pDrm->mockReadSysmanQueryEngineInfoMultiDevice = true; pSysfsAccess->mockReadSymLinkSuccess = true; - for (auto handle : pSysmanDeviceImp->pEngineHandleContext->handleList) { - delete handle; - } - pSysmanDeviceImp->pEngineHandleContext->handleList.clear(); pSysmanDeviceImp->getRootDeviceEnvironment().getMutableHardwareInfo()->capabilityTable.isIntegratedDevice = true; device = pSysmanDevice; @@ -395,10 +377,6 @@ TEST_F(ZesEngineMultiFixture, GivenHandleQueryItemCalledWhenPmuInterfaceOpenFail pFsAccess->mockReadVal = true; - for (auto handle : pSysmanDeviceImp->pEngineHandleContext->handleList) { - delete handle; - } - pSysmanDeviceImp->pEngineHandleContext->handleList.clear(); pSysmanDeviceImp->pEngineHandleContext->init(pOsSysman->getSubDeviceCount()); uint32_t count = 0;