From ac929eaf617151851d3302efab6b0f9b5799d802 Mon Sep 17 00:00:00 2001 From: "Singh, Prasoon" Date: Fri, 3 Mar 2023 17:08:16 +0000 Subject: [PATCH] (Sysman):Changes made in standby API. Replacing normal pointers by smart pointers in standby module of L0 sysman. Related-To: LOCI-2810 Signed-off-by: Singh, Prasoon --- .../sysman/standby/linux/os_standby_imp.cpp | 6 ++--- .../tools/source/sysman/standby/os_standby.h | 6 +++-- .../tools/source/sysman/standby/standby.cpp | 15 ++++-------- .../tools/source/sysman/standby/standby.h | 4 ++-- .../source/sysman/standby/standby_imp.cpp | 7 ++---- .../tools/source/sysman/standby/standby_imp.h | 4 ++-- .../sysman/standby/windows/os_standby_imp.cpp | 8 +++---- .../standby/linux/test_zes_sysman_standby.cpp | 23 ++++--------------- 8 files changed, 25 insertions(+), 48 deletions(-) diff --git a/level_zero/tools/source/sysman/standby/linux/os_standby_imp.cpp b/level_zero/tools/source/sysman/standby/linux/os_standby_imp.cpp index c3a2cc4337..0f57293d82 100644 --- a/level_zero/tools/source/sysman/standby/linux/os_standby_imp.cpp +++ b/level_zero/tools/source/sysman/standby/linux/os_standby_imp.cpp @@ -85,9 +85,9 @@ LinuxStandbyImp::LinuxStandbyImp(OsSysman *pOsSysman, ze_bool_t onSubdevice, uin init(); } -OsStandby *OsStandby::create(OsSysman *pOsSysman, ze_bool_t onSubdevice, uint32_t subdeviceId) { - LinuxStandbyImp *pLinuxStandbyImp = new LinuxStandbyImp(pOsSysman, onSubdevice, subdeviceId); - return static_cast(pLinuxStandbyImp); +std::unique_ptr OsStandby::create(OsSysman *pOsSysman, ze_bool_t onSubdevice, uint32_t subdeviceId) { + std::unique_ptr pLinuxStandbyImp = std::make_unique(pOsSysman, onSubdevice, subdeviceId); + return pLinuxStandbyImp; } } // namespace L0 diff --git a/level_zero/tools/source/sysman/standby/os_standby.h b/level_zero/tools/source/sysman/standby/os_standby.h index 90c8825d86..a6de3bc670 100644 --- a/level_zero/tools/source/sysman/standby/os_standby.h +++ b/level_zero/tools/source/sysman/standby/os_standby.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2021 Intel Corporation + * Copyright (C) 2020-2023 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -10,6 +10,8 @@ #include "level_zero/tools/source/sysman/os_sysman.h" #include +#include + namespace L0 { class OsStandby { @@ -20,7 +22,7 @@ class OsStandby { virtual bool isStandbySupported(void) = 0; - static OsStandby *create(OsSysman *pOsSysman, ze_bool_t onSubdevice, uint32_t subdeviceId); + static std::unique_ptr create(OsSysman *pOsSysman, ze_bool_t onSubdevice, uint32_t subdeviceId); virtual ~OsStandby() {} }; diff --git a/level_zero/tools/source/sysman/standby/standby.cpp b/level_zero/tools/source/sysman/standby/standby.cpp index 8177760b11..1688df6b5a 100644 --- a/level_zero/tools/source/sysman/standby/standby.cpp +++ b/level_zero/tools/source/sysman/standby/standby.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2022 Intel Corporation + * Copyright (C) 2020-2023 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -13,18 +13,11 @@ namespace L0 { -StandbyHandleContext::~StandbyHandleContext() { - for (Standby *pStandby : handleList) { - delete pStandby; - } -} - +StandbyHandleContext::~StandbyHandleContext() = default; void StandbyHandleContext::createHandle(ze_device_handle_t deviceHandle) { - Standby *pStandby = new StandbyImp(pOsSysman, deviceHandle); + std::unique_ptr pStandby = std::make_unique(pOsSysman, deviceHandle); if (pStandby->isStandbyEnabled == true) { - handleList.push_back(pStandby); - } else { - delete pStandby; + handleList.push_back(std::move(pStandby)); } } diff --git a/level_zero/tools/source/sysman/standby/standby.h b/level_zero/tools/source/sysman/standby/standby.h index a9a290887f..8d49acc373 100644 --- a/level_zero/tools/source/sysman/standby/standby.h +++ b/level_zero/tools/source/sysman/standby/standby.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2022 Intel Corporation + * Copyright (C) 2020-2023 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -44,7 +44,7 @@ struct StandbyHandleContext { ze_result_t standbyGet(uint32_t *pCount, zes_standby_handle_t *phStandby); OsSysman *pOsSysman; - std::vector handleList = {}; + std::vector> handleList = {}; private: void createHandle(ze_device_handle_t deviceHandle); diff --git a/level_zero/tools/source/sysman/standby/standby_imp.cpp b/level_zero/tools/source/sysman/standby/standby_imp.cpp index 4a89550bc4..c218a6b2a0 100644 --- a/level_zero/tools/source/sysman/standby/standby_imp.cpp +++ b/level_zero/tools/source/sysman/standby/standby_imp.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2022 Intel Corporation + * Copyright (C) 2020-2023 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -40,8 +40,5 @@ StandbyImp::StandbyImp(OsSysman *pOsSysman, ze_device_handle_t handle) : deviceH init(); } -StandbyImp::~StandbyImp() { - delete pOsStandby; -} - +StandbyImp::~StandbyImp() {} } // namespace L0 diff --git a/level_zero/tools/source/sysman/standby/standby_imp.h b/level_zero/tools/source/sysman/standby/standby_imp.h index 3c628d79c4..60600d33b4 100644 --- a/level_zero/tools/source/sysman/standby/standby_imp.h +++ b/level_zero/tools/source/sysman/standby/standby_imp.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2021 Intel Corporation + * Copyright (C) 2020-2023 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -24,7 +24,7 @@ class StandbyImp : public Standby, NEO::NonCopyableOrMovableClass { StandbyImp() = default; StandbyImp(OsSysman *pOsSysman, ze_device_handle_t handle); ~StandbyImp() override; - OsStandby *pOsStandby = nullptr; + std::unique_ptr pOsStandby = nullptr; void init(); diff --git a/level_zero/tools/source/sysman/standby/windows/os_standby_imp.cpp b/level_zero/tools/source/sysman/standby/windows/os_standby_imp.cpp index 90ce2535a5..5e37cbd715 100644 --- a/level_zero/tools/source/sysman/standby/windows/os_standby_imp.cpp +++ b/level_zero/tools/source/sysman/standby/windows/os_standby_imp.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2021 Intel Corporation + * Copyright (C) 2020-2023 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -33,9 +33,9 @@ bool WddmStandbyImp::isStandbySupported(void) { return false; } -OsStandby *OsStandby::create(OsSysman *pOsSysman, ze_bool_t onSubdevice, uint32_t subdeviceId) { - WddmStandbyImp *pWddmStandbyImp = new WddmStandbyImp(); - return static_cast(pWddmStandbyImp); +std::unique_ptr OsStandby::create(OsSysman *pOsSysman, ze_bool_t onSubdevice, uint32_t subdeviceId) { + std::unique_ptr pWddmStandbyImp = std::make_unique(); + return pWddmStandbyImp; } } // namespace L0 diff --git a/level_zero/tools/test/unit_tests/sources/sysman/standby/linux/test_zes_sysman_standby.cpp b/level_zero/tools/test/unit_tests/sources/sysman/standby/linux/test_zes_sysman_standby.cpp index c5aa5623ed..eb7ca5d36b 100644 --- a/level_zero/tools/test/unit_tests/sources/sysman/standby/linux/test_zes_sysman_standby.cpp +++ b/level_zero/tools/test/unit_tests/sources/sysman/standby/linux/test_zes_sysman_standby.cpp @@ -35,9 +35,6 @@ class ZesStandbyFixture : public SysmanDeviceFixture { pOriginalSysfsAccess = pLinuxSysmanImp->pSysfsAccess; pLinuxSysmanImp->pSysfsAccess = ptestSysfsAccess.get(); ptestSysfsAccess->setVal(standbyModeFile, standbyModeDefault); - for (const auto &handle : pSysmanDeviceImp->pStandbyHandleContext->handleList) { - delete handle; - } pSysmanDeviceImp->pStandbyHandleContext->handleList.clear(); uint32_t subDeviceCount = 0; // We received a device handle. Check for subdevices in this device @@ -94,9 +91,9 @@ TEST_F(ZesStandbyFixture, GivenComponentCountZeroWhenCallingzesStandbyGetThenNon EXPECT_NE(nullptr, standbyHandle.data()); EXPECT_EQ(count, mockHandleCount); - StandbyImp *ptestStandbyImp = new StandbyImp(pSysmanDeviceImp->pStandbyHandleContext->pOsSysman, device->toHandle()); + std::unique_ptr ptestStandbyImp = std::make_unique(pSysmanDeviceImp->pStandbyHandleContext->pOsSysman, device->toHandle()); count = 0; - pSysmanDeviceImp->pStandbyHandleContext->handleList.push_back(ptestStandbyImp); + pSysmanDeviceImp->pStandbyHandleContext->handleList.push_back(std::move(ptestStandbyImp)); result = zesDeviceEnumStandbyDomains(device, &count, nullptr); EXPECT_EQ(ZE_RESULT_SUCCESS, result); @@ -112,7 +109,6 @@ TEST_F(ZesStandbyFixture, GivenComponentCountZeroWhenCallingzesStandbyGetThenNon EXPECT_EQ(count, mockHandleCount + 1); pSysmanDeviceImp->pStandbyHandleContext->handleList.pop_back(); - delete ptestStandbyImp; } TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbyGetPropertiesThenVerifyzesStandbyGetPropertiesCallSucceeds) { @@ -248,17 +244,13 @@ TEST_F(ZesStandbyFixture, GivenOnSubdeviceNotSetWhenValidatingosStandbyGetProper ze_device_properties_t deviceProperties = {}; ze_bool_t isSubDevice = deviceProperties.flags & ZE_DEVICE_PROPERTY_FLAG_SUBDEVICE; Device::fromHandle(device)->getProperties(&deviceProperties); - PublicLinuxStandbyImp *pLinuxStandbyImp = new PublicLinuxStandbyImp(pOsSysman, isSubDevice, deviceProperties.subdeviceId); + std::unique_ptr pLinuxStandbyImp = std::make_unique(pOsSysman, isSubDevice, deviceProperties.subdeviceId); EXPECT_EQ(ZE_RESULT_SUCCESS, pLinuxStandbyImp->osStandbyGetProperties(properties)); EXPECT_EQ(properties.subdeviceId, deviceProperties.subdeviceId); EXPECT_EQ(properties.onSubdevice, isSubDevice); - delete pLinuxStandbyImp; } TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbySetModeDefaultWithLegacyPathThenVerifySysmanzesySetModeCallSucceeds) { - for (auto handle : pSysmanDeviceImp->pStandbyHandleContext->handleList) { - delete handle; - } pSysmanDeviceImp->pStandbyHandleContext->handleList.clear(); ptestSysfsAccess->directoryExistsResult = false; pSysmanDeviceImp->pStandbyHandleContext->init(deviceHandles); @@ -279,9 +271,6 @@ TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbySetModeDef } TEST_F(ZesStandbyFixture, GivenValidStandbyHandleWhenCallingzesStandbySetModeNeverWithLegacyPathThenVerifySysmanzesySetModeCallSucceeds) { - for (auto handle : pSysmanDeviceImp->pStandbyHandleContext->handleList) { - delete handle; - } pSysmanDeviceImp->pStandbyHandleContext->handleList.clear(); ptestSysfsAccess->directoryExistsResult = false; pSysmanDeviceImp->pStandbyHandleContext->init(deviceHandles); @@ -316,9 +305,6 @@ class ZesStandbyMultiDeviceFixture : public SysmanMultiDeviceFixture { pOriginalSysfsAccess = pLinuxSysmanImp->pSysfsAccess; pLinuxSysmanImp->pSysfsAccess = ptestSysfsAccess.get(); ptestSysfsAccess->setVal(standbyModeFile, standbyModeDefault); - for (const auto &handle : pSysmanDeviceImp->pStandbyHandleContext->handleList) { - delete handle; - } pSysmanDeviceImp->pStandbyHandleContext->handleList.clear(); uint32_t subDeviceCount = 0; std::vector deviceHandles; @@ -374,11 +360,10 @@ TEST_F(ZesStandbyMultiDeviceFixture, GivenOnSubdeviceNotSetWhenValidatingosStand ze_device_properties_t deviceProperties = {}; ze_bool_t isSubDevice = deviceProperties.flags & ZE_DEVICE_PROPERTY_FLAG_SUBDEVICE; Device::fromHandle(device)->getProperties(&deviceProperties); - PublicLinuxStandbyImp *pLinuxStandbyImp = new PublicLinuxStandbyImp(pOsSysman, isSubDevice, deviceProperties.subdeviceId); + std::unique_ptr pLinuxStandbyImp = std::make_unique(pOsSysman, isSubDevice, deviceProperties.subdeviceId); EXPECT_EQ(ZE_RESULT_SUCCESS, pLinuxStandbyImp->osStandbyGetProperties(properties)); EXPECT_EQ(properties.subdeviceId, deviceProperties.subdeviceId); EXPECT_EQ(properties.onSubdevice, isSubDevice); - delete pLinuxStandbyImp; } class StandbyAffinityMaskFixture : public ZesStandbyMultiDeviceFixture {