diff --git a/level_zero/core/source/driver/host_pointer_manager.h b/level_zero/core/source/driver/host_pointer_manager.h index f9d9d864f6..4bd1958b74 100644 --- a/level_zero/core/source/driver/host_pointer_manager.h +++ b/level_zero/core/source/driver/host_pointer_manager.h @@ -7,6 +7,7 @@ #pragma once #include "shared/source/helpers/device_bitfield.h" +#include "shared/source/helpers/non_copyable_or_moveable.h" #include "shared/source/memory_manager/multi_graphics_allocation.h" #include "shared/source/utilities/spinlock.h" @@ -25,7 +26,7 @@ class MemoryManager; namespace L0 { struct Device; -struct HostPointerData { +struct HostPointerData : NEO::NonAssignableClass { HostPointerData(uint32_t maxRootDeviceIndex) : hostPtrAllocations(maxRootDeviceIndex), maxRootDeviceIndex(maxRootDeviceIndex) { diff --git a/level_zero/sysman/source/linux/sysman_fs_access.h b/level_zero/sysman/source/linux/sysman_fs_access.h index cf301abbda..32feb21e57 100644 --- a/level_zero/sysman/source/linux/sysman_fs_access.h +++ b/level_zero/sysman/source/linux/sysman_fs_access.h @@ -7,6 +7,7 @@ #pragma once +#include "shared/source/helpers/non_copyable_or_moveable.h" #include "shared/source/os_interface/linux/sys_calls.h" #include "level_zero/ze_api.h" @@ -43,7 +44,7 @@ class FdCache { void eraseLeastUsedEntryFromCache(); }; -class FsAccess { +class FsAccess : NEO::NonAssignableClass { public: static FsAccess *create(); FsAccess(const FsAccess &fsAccess); diff --git a/level_zero/tools/source/sysman/linux/fs_access.h b/level_zero/tools/source/sysman/linux/fs_access.h index 72f6b2238e..cc39317aa3 100644 --- a/level_zero/tools/source/sysman/linux/fs_access.h +++ b/level_zero/tools/source/sysman/linux/fs_access.h @@ -7,6 +7,7 @@ #pragma once +#include "shared/source/helpers/non_copyable_or_moveable.h" #include "shared/source/os_interface/linux/sys_calls.h" #include "level_zero/ze_api.h" @@ -43,7 +44,7 @@ class FdCache { void eraseLeastUsedEntryFromCache(); }; -class FsAccess { +class FsAccess : NEO::NonAssignableClass { public: static FsAccess *create(); FsAccess(const FsAccess &fsAccess); diff --git a/shared/source/execution_environment/root_device_environment.h b/shared/source/execution_environment/root_device_environment.h index a54a37013e..294dbf973d 100644 --- a/shared/source/execution_environment/root_device_environment.h +++ b/shared/source/execution_environment/root_device_environment.h @@ -8,6 +8,7 @@ #pragma once #include "shared/source/built_ins/sip_kernel_type.h" #include "shared/source/helpers/affinity_mask.h" +#include "shared/source/helpers/non_copyable_or_moveable.h" #include "shared/source/helpers/options.h" #include @@ -43,13 +44,12 @@ class ReleaseHelper; struct AllocationProperties; struct HardwareInfo; -struct RootDeviceEnvironment { +struct RootDeviceEnvironment : NonCopyableClass { protected: std::unique_ptr hwInfo; public: RootDeviceEnvironment(ExecutionEnvironment &executionEnvironment); - RootDeviceEnvironment(RootDeviceEnvironment &) = delete; MOCKABLE_VIRTUAL ~RootDeviceEnvironment(); MOCKABLE_VIRTUAL const HardwareInfo *getHardwareInfo() const; diff --git a/shared/source/helpers/non_copyable_or_moveable.h b/shared/source/helpers/non_copyable_or_moveable.h index 45cfb798d8..df326f77e1 100644 --- a/shared/source/helpers/non_copyable_or_moveable.h +++ b/shared/source/helpers/non_copyable_or_moveable.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019-2020 Intel Corporation + * Copyright (C) 2019-2023 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -26,4 +26,11 @@ class NonCopyableClass { NonCopyableClass(NonCopyableClass &&) = default; NonCopyableClass &operator=(NonCopyableClass &&) = default; }; + +class NonAssignableClass { + public: + NonAssignableClass() = default; + NonAssignableClass &operator=(const NonAssignableClass &) = delete; + NonAssignableClass &operator=(NonAssignableClass &&) = delete; +}; } // namespace NEO diff --git a/shared/source/memory_manager/multi_graphics_allocation.h b/shared/source/memory_manager/multi_graphics_allocation.h index d5fab7feb0..04c6af6aa9 100644 --- a/shared/source/memory_manager/multi_graphics_allocation.h +++ b/shared/source/memory_manager/multi_graphics_allocation.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2022 Intel Corporation + * Copyright (C) 2020-2023 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -7,6 +7,7 @@ #pragma once +#include "shared/source/helpers/non_copyable_or_moveable.h" #include "shared/source/memory_manager/allocation_type.h" #include "shared/source/utilities/stackvec.h" @@ -17,7 +18,7 @@ namespace NEO { class MigrationSyncData; class GraphicsAllocation; -class MultiGraphicsAllocation { +class MultiGraphicsAllocation : NonAssignableClass { public: MultiGraphicsAllocation(uint32_t maxRootDeviceIndex); MultiGraphicsAllocation(const MultiGraphicsAllocation &multiGraphicsAllocation); diff --git a/shared/source/utilities/buffer_pool_allocator.h b/shared/source/utilities/buffer_pool_allocator.h index f9061031ce..56c48b2bc0 100644 --- a/shared/source/utilities/buffer_pool_allocator.h +++ b/shared/source/utilities/buffer_pool_allocator.h @@ -32,7 +32,7 @@ struct SmallBuffersParams { }; template -struct AbstractBuffersPool : public SmallBuffersParams, public NonCopyableClass { +struct AbstractBuffersPool : public SmallBuffersParams, public NonCopyableClass, NonAssignableClass { // The prototype of a function allocating the `mainStorage` is not specified. // That would be an unnecessary limitation here - it is completely up to derived class implementation. // Perhaps the allocating function needs to leverage `HeapAllocator::allocate()` and also diff --git a/shared/source/utilities/range.h b/shared/source/utilities/range.h index c7efa76ce7..f11f1501c0 100644 --- a/shared/source/utilities/range.h +++ b/shared/source/utilities/range.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2022 Intel Corporation + * Copyright (C) 2018-2023 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -7,12 +7,14 @@ #pragma once +#include "shared/source/helpers/non_copyable_or_moveable.h" + #include namespace NEO { template -struct Range { +struct Range : NonAssignableClass { using iterator = DataType *; using const_iterator = const DataType *; using reverse_iterator = std::reverse_iterator;