Skip to content

Commit 7e7abe2

Browse files
committed
Make access to sysfs lock-free
1 parent 1dec647 commit 7e7abe2

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

level_zero/sysman/source/shared/linux/sysman_fs_access_interface.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,10 @@ FdCacheInterface::~FdCacheInterface() {
6161

6262
template <typename T>
6363
ze_result_t FsAccessInterface::readValue(const std::string file, T &val) {
64-
auto lock = this->obtainMutex();
64+
std::unique_lock<std::mutex> lockObj;
65+
if (needLock) {
66+
lockObj = this->obtainMutex();
67+
}
6568

6669
std::string readVal(64, '\0');
6770
int fd = pFdCacheInterface->getFd(file);
@@ -84,7 +87,7 @@ ze_result_t FsAccessInterface::readValue(const std::string file, T &val) {
8487
}
8588

8689
// Generic Filesystem Access
87-
FsAccessInterface::FsAccessInterface() {
90+
FsAccessInterface::FsAccessInterface(bool needLock) : needLock(needLock) {
8891
pFdCacheInterface = std::make_unique<FdCacheInterface>();
8992
}
9093

@@ -398,7 +401,7 @@ ::pid_t ProcFsAccessInterface::myProcessId() {
398401
}
399402

400403
// Sysfs Access
401-
SysFsAccessInterface::SysFsAccessInterface() = default;
404+
SysFsAccessInterface::SysFsAccessInterface() : FsAccessInterface(false) {}
402405
SysFsAccessInterface::~SysFsAccessInterface() = default;
403406

404407
const std::string SysFsAccessInterface::drmPath = "/sys/class/drm/";

level_zero/sysman/source/shared/linux/sysman_fs_access_interface.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,9 @@ class FsAccessInterface {
6464
virtual bool directoryExists(const std::string path);
6565

6666
protected:
67-
FsAccessInterface();
67+
FsAccessInterface(bool needLock = true);
6868
MOCKABLE_VIRTUAL std::unique_lock<std::mutex> obtainMutex();
69+
bool needLock;
6970

7071
private:
7172
template <typename T>

0 commit comments

Comments
 (0)