From 49827b71226ebe661370ea04527fcbf30bfc00b6 Mon Sep 17 00:00:00 2001 From: "Singh, Prasoon" Date: Fri, 10 Mar 2023 19:00:55 +0000 Subject: [PATCH] (Sysman):Changes made in engine API. Replacing normal pointers by smart pointers in engine module of L0 sysman. Related-To: LOCI-2810 Signed-off-by: Singh, Prasoon --- .../tools/source/sysman/engine/engine.cpp | 9 ++----- .../tools/source/sysman/engine/engine.h | 2 +- .../tools/source/sysman/engine/engine_imp.cpp | 9 ++----- .../tools/source/sysman/engine/engine_imp.h | 4 +-- .../sysman/engine/linux/os_engine_imp.cpp | 6 ++--- .../engine/linux/os_engine_imp_prelim.cpp | 6 ++--- .../tools/source/sysman/engine/os_engine.h | 4 +-- .../sysman/engine/windows/os_engine_imp.cpp | 6 ++--- .../sysman/engine/linux/test_zes_engine.cpp | 7 ------ .../engine/linux/test_zes_engine_prelim.cpp | 25 ------------------- .../sysman/engine/windows/test_zes_engine.cpp | 9 ++----- 11 files changed, 20 insertions(+), 67 deletions(-) diff --git a/level_zero/tools/source/sysman/engine/engine.cpp b/level_zero/tools/source/sysman/engine/engine.cpp index f55a7f9aff..7b74dfb633 100644 --- a/level_zero/tools/source/sysman/engine/engine.cpp +++ b/level_zero/tools/source/sysman/engine/engine.cpp @@ -24,11 +24,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)); } } @@ -48,9 +46,6 @@ void EngineHandleContext::init(std::vector &deviceHandles) { } void EngineHandleContext::releaseEngines() { - for (Engine *pEngine : handleList) { - delete pEngine; - } handleList.clear(); } diff --git a/level_zero/tools/source/sysman/engine/engine.h b/level_zero/tools/source/sysman/engine/engine.h index c1a2866a80..063ceac99e 100644 --- a/level_zero/tools/source/sysman/engine/engine.h +++ b/level_zero/tools/source/sysman/engine/engine.h @@ -39,7 +39,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/tools/source/sysman/engine/engine_imp.cpp b/level_zero/tools/source/sysman/engine/engine_imp.cpp index feb545be34..898463a897 100644 --- a/level_zero/tools/source/sysman/engine/engine_imp.cpp +++ b/level_zero/tools/source/sysman/engine/engine_imp.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2022 Intel Corporation + * Copyright (C) 2020-2023 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -30,11 +30,6 @@ EngineImp::EngineImp(OsSysman *pOsSysman, zes_engine_group_t engineType, uint32_ init(); } -EngineImp::~EngineImp() { - if (nullptr != pOsEngine) { - delete pOsEngine; - pOsEngine = nullptr; - } -} +EngineImp::~EngineImp() = default; } // namespace L0 diff --git a/level_zero/tools/source/sysman/engine/engine_imp.h b/level_zero/tools/source/sysman/engine/engine_imp.h index 45dac6e265..f8fd7fd7ec 100644 --- a/level_zero/tools/source/sysman/engine/engine_imp.h +++ b/level_zero/tools/source/sysman/engine/engine_imp.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2022 Intel Corporation + * Copyright (C) 2020-2023 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -23,7 +23,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 = nullptr; void init(); private: diff --git a/level_zero/tools/source/sysman/engine/linux/os_engine_imp.cpp b/level_zero/tools/source/sysman/engine/linux/os_engine_imp.cpp index 35fe926346..0f0a573437 100644 --- a/level_zero/tools/source/sysman/engine/linux/os_engine_imp.cpp +++ b/level_zero/tools/source/sysman/engine/linux/os_engine_imp.cpp @@ -95,9 +95,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 L0 diff --git a/level_zero/tools/source/sysman/engine/linux/os_engine_imp_prelim.cpp b/level_zero/tools/source/sysman/engine/linux/os_engine_imp_prelim.cpp index 4e085d6765..b301672a91 100644 --- a/level_zero/tools/source/sysman/engine/linux/os_engine_imp_prelim.cpp +++ b/level_zero/tools/source/sysman/engine/linux/os_engine_imp_prelim.cpp @@ -134,9 +134,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 L0 diff --git a/level_zero/tools/source/sysman/engine/os_engine.h b/level_zero/tools/source/sysman/engine/os_engine.h index 67458f1275..5d22904b2c 100644 --- a/level_zero/tools/source/sysman/engine/os_engine.h +++ b/level_zero/tools/source/sysman/engine/os_engine.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2022 Intel Corporation + * Copyright (C) 2020-2023 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -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/tools/source/sysman/engine/windows/os_engine_imp.cpp b/level_zero/tools/source/sysman/engine/windows/os_engine_imp.cpp index 9c262ea9f5..07cccd1f1f 100644 --- a/level_zero/tools/source/sysman/engine/windows/os_engine_imp.cpp +++ b/level_zero/tools/source/sysman/engine/windows/os_engine_imp.cpp @@ -70,9 +70,9 @@ WddmEngineImp::WddmEngineImp(OsSysman *pOsSysman, zes_engine_group_t engineType, pKmdSysManager = &pWddmSysmanImp->getKmdSysManager(); } -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/tools/test/unit_tests/sources/sysman/engine/linux/test_zes_engine.cpp b/level_zero/tools/test/unit_tests/sources/sysman/engine/linux/test_zes_engine.cpp index 0ec751d43f..55af6f812e 100644 --- a/level_zero/tools/test/unit_tests/sources/sysman/engine/linux/test_zes_engine.cpp +++ b/level_zero/tools/test/unit_tests/sources/sysman/engine/linux/test_zes_engine.cpp @@ -58,10 +58,6 @@ class ZesEngineFixture : public SysmanDeviceFixture { pLinuxSysmanImp->pPmuInterface = pPmuInterface.get(); pFsAccess->mockReadVal = 23; - for (auto handle : pSysmanDeviceImp->pEngineHandleContext->handleList) { - delete handle; - } - pSysmanDeviceImp->pEngineHandleContext->handleList.clear(); uint32_t subDeviceCount = 0; // We received a device handle. Check for subdevices in this device @@ -181,8 +177,6 @@ TEST_F(ZesEngineFixture, GivenTestDiscreteDevicesAndValidEngineHandleWhenCalling auto pOsEngineTest2 = 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) { @@ -192,7 +186,6 @@ TEST_F(ZesEngineFixture, GivenTestIntegratedDevicesAndValidEngineHandleWhenCalli auto pOsEngineTest1 = 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/tools/test/unit_tests/sources/sysman/engine/linux/test_zes_engine_prelim.cpp b/level_zero/tools/test/unit_tests/sources/sysman/engine/linux/test_zes_engine_prelim.cpp index b743b76c7a..49a010ae45 100644 --- a/level_zero/tools/test/unit_tests/sources/sysman/engine/linux/test_zes_engine_prelim.cpp +++ b/level_zero/tools/test/unit_tests/sources/sysman/engine/linux/test_zes_engine_prelim.cpp @@ -58,10 +58,6 @@ class ZesEngineFixture : public SysmanDeviceFixture { pLinuxSysmanImp->pDrm = pDrm.get(); pLinuxSysmanImp->pPmuInterface = pPmuInterface.get(); - for (auto handle : pSysmanDeviceImp->pEngineHandleContext->handleList) { - delete handle; - } - pSysmanDeviceImp->pEngineHandleContext->handleList.clear(); uint32_t subDeviceCount = 0; // We received a device handle. Check for subdevices in this device @@ -210,8 +206,6 @@ TEST_F(ZesEngineFixture, GivenTestDiscreteDevicesAndValidEngineHandleWhenCalling auto pOsEngineTest2 = 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) { @@ -226,7 +220,6 @@ TEST_F(ZesEngineFixture, GivenTestIntegratedDevicesAndValidEngineHandleWhenCalli auto pOsEngineTest1 = 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) { @@ -261,9 +254,6 @@ TEST_F(ZesEngineFixture, GivenValidOsSysmanPointerWhenRetrievingEngineTypeAndIns TEST_F(ZesEngineFixture, GivenHandleQueryItemCalledWithInvalidEngineTypeThenzesDeviceEnumEngineGroupsSucceeds) { auto drm = std::make_unique(const_cast(neoDevice->getRootDeviceEnvironment())); pLinuxSysmanImp->pDrm = drm.get(); - for (auto handle : pSysmanDeviceImp->pEngineHandleContext->handleList) { - delete handle; - } pSysmanDeviceImp->pEngineHandleContext->handleList.clear(); pSysmanDeviceImp->pEngineHandleContext->init(deviceHandles); uint32_t count = 0; @@ -276,10 +266,6 @@ TEST_F(ZesEngineFixture, GivenHandleQueryItemCalledWhenPmuInterfaceOpenFailsThen pFsAccess->mockReadVal = true; - for (auto handle : pSysmanDeviceImp->pEngineHandleContext->handleList) { - delete handle; - } - pSysmanDeviceImp->pEngineHandleContext->handleList.clear(); pSysmanDeviceImp->pEngineHandleContext->init(deviceHandles); uint32_t count = 0; @@ -302,9 +288,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(); pLinuxSysmanImp->reInitSysmanDeviceResources(); @@ -350,10 +333,6 @@ class ZesEngineMultiFixture : public SysmanMultiDeviceFixture { pDrm->mockReadSysmanQueryEngineInfoMultiDevice = true; pSysfsAccess->mockReadSymLinkSuccess = true; - for (auto handle : pSysmanDeviceImp->pEngineHandleContext->handleList) { - delete handle; - } - pSysmanDeviceImp->pEngineHandleContext->handleList.clear(); uint32_t subDeviceCount = 0; // We received a device handle. Check for subdevices in this device @@ -443,10 +422,6 @@ TEST_F(ZesEngineMultiFixture, GivenHandleQueryItemCalledWhenPmuInterfaceOpenFail pFsAccess->mockReadVal = true; - for (auto handle : pSysmanDeviceImp->pEngineHandleContext->handleList) { - delete handle; - } - pSysmanDeviceImp->pEngineHandleContext->handleList.clear(); pSysmanDeviceImp->pEngineHandleContext->init(deviceHandles); uint32_t count = 0; diff --git a/level_zero/tools/test/unit_tests/sources/sysman/engine/windows/test_zes_engine.cpp b/level_zero/tools/test/unit_tests/sources/sysman/engine/windows/test_zes_engine.cpp index 8fe7194b5b..ed40a097a2 100644 --- a/level_zero/tools/test/unit_tests/sources/sysman/engine/windows/test_zes_engine.cpp +++ b/level_zero/tools/test/unit_tests/sources/sysman/engine/windows/test_zes_engine.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2022 Intel Corporation + * Copyright (C) 2020-2023 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -30,10 +30,6 @@ class SysmanDeviceEngineFixture : public SysmanDeviceFixture { pOriginalKmdSysManager = pWddmSysmanImp->pKmdSysManager; pWddmSysmanImp->pKmdSysManager = pKmdSysManager.get(); - for (auto handle : pSysmanDeviceImp->pEngineHandleContext->handleList) { - delete handle; - } - pSysmanDeviceImp->pEngineHandleContext->handleList.clear(); } @@ -96,10 +92,9 @@ TEST_F(SysmanDeviceEngineFixture, GivenComponentCountZeroWhenEnumeratingEngineGr } TEST_F(SysmanDeviceEngineFixture, GivenUnsupportedEngineHandleWhenGettingEngineActivityThenFailureIsReturned) { - WddmEngineImp *pEngineImp = new WddmEngineImp(pOsSysman, ZES_ENGINE_GROUP_3D_ALL, 0, 0); + std::unique_ptr pEngineImp = std::make_unique(pOsSysman, ZES_ENGINE_GROUP_3D_ALL, 0, 0); zes_engine_stats_t pStats = {}; EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, pEngineImp->getActivity(&pStats)); - delete pEngineImp; } TEST_F(SysmanDeviceEngineFixture, GivenValidHandleGetPropertiesThenCorrectEngineGroupIsReturned) {