diff --git a/level_zero/sysman/source/shared/linux/sysman_fs_access_interface.cpp b/level_zero/sysman/source/shared/linux/sysman_fs_access_interface.cpp index b563c694c061d..11d8b3ade37ee 100644 --- a/level_zero/sysman/source/shared/linux/sysman_fs_access_interface.cpp +++ b/level_zero/sysman/source/shared/linux/sysman_fs_access_interface.cpp @@ -61,7 +61,10 @@ FdCacheInterface::~FdCacheInterface() { template ze_result_t FsAccessInterface::readValue(const std::string file, T &val) { - auto lock = this->obtainMutex(); + std::unique_lock lockObj; + if (needLock) { + lockObj = this->obtainMutex(); + } std::string readVal(64, '\0'); int fd = pFdCacheInterface->getFd(file); @@ -84,7 +87,7 @@ ze_result_t FsAccessInterface::readValue(const std::string file, T &val) { } // Generic Filesystem Access -FsAccessInterface::FsAccessInterface() { +FsAccessInterface::FsAccessInterface(bool needLock) : needLock(needLock) { pFdCacheInterface = std::make_unique(); } @@ -398,7 +401,7 @@ ::pid_t ProcFsAccessInterface::myProcessId() { } // Sysfs Access -SysFsAccessInterface::SysFsAccessInterface() = default; +SysFsAccessInterface::SysFsAccessInterface() : FsAccessInterface(false) {} SysFsAccessInterface::~SysFsAccessInterface() = default; const std::string SysFsAccessInterface::drmPath = "/sys/class/drm/"; diff --git a/level_zero/sysman/source/shared/linux/sysman_fs_access_interface.h b/level_zero/sysman/source/shared/linux/sysman_fs_access_interface.h index 6cc22ffb1aefa..0961e65f1af99 100644 --- a/level_zero/sysman/source/shared/linux/sysman_fs_access_interface.h +++ b/level_zero/sysman/source/shared/linux/sysman_fs_access_interface.h @@ -64,8 +64,9 @@ class FsAccessInterface { virtual bool directoryExists(const std::string path); protected: - FsAccessInterface(); + FsAccessInterface(bool needLock = true); MOCKABLE_VIRTUAL std::unique_lock obtainMutex(); + bool needLock; private: template