Skip to content

Commit ece1ff7

Browse files
committed
feat(fam): use std lock_guard instead of LockGuard
1 parent 36db85d commit ece1ff7

3 files changed

Lines changed: 21 additions & 38 deletions

File tree

src/eckit/io/fam/openfam_mock/FamMockSession.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ void FamMockSession::resetUnlocked() {
242242
}
243243

244244
void FamMockSession::reset() {
245-
LockGuard guard(*this);
245+
std::lock_guard guard(*this);
246246
resetUnlocked();
247247
}
248248

src/eckit/io/fam/openfam_mock/FamMockSession.h

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#include <cstddef>
3737
#include <cstdint>
3838
#include <cstring>
39+
#include <mutex>
3940
#include <string>
4041

4142
//----------------------------------------------------------------------------------------------------------------------
@@ -125,7 +126,7 @@ static_assert(sizeof(State) + State::capacity <= g_shm_total_size,
125126
//----------------------------------------------------------------------------------------------------------------------
126127

127128
/// Manages a shared-memory that stores all mock FAM States.
128-
/// Thread-safe and process-safe via the shared mutex `LockGuard`.
129+
/// Thread-safe and process-safe via shared mutex (satisfies Lockable for std::lock_guard).
129130
class FamMockSession {
130131
public:
131132

@@ -215,25 +216,6 @@ class FamMockSession {
215216

216217
//----------------------------------------------------------------------------------------------------------------------
217218

218-
class LockGuard {
219-
public:
220-
221-
explicit LockGuard(FamMockSession& session) : session_(session) { session_.lock(); }
222-
~LockGuard() { session_.unlock(); }
223-
224-
// rules
225-
LockGuard(const LockGuard&) = delete;
226-
LockGuard& operator=(const LockGuard&) = delete;
227-
LockGuard(LockGuard&&) = delete;
228-
LockGuard& operator=(LockGuard&&) = delete;
229-
230-
private:
231-
232-
FamMockSession& session_;
233-
};
234-
235-
//----------------------------------------------------------------------------------------------------------------------
236-
237219
} // namespace mock
238220

239221
} // namespace openfam

src/eckit/io/fam/openfam_mock/fam/fam.cc

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include <cassert>
2525
#include <cstdlib> // std::abort
2626
#include <cstring>
27+
#include <mutex>
2728
#include <string>
2829
#include <string_view>
2930

@@ -102,7 +103,7 @@ Fam_Region_Descriptor* fam::fam_create_region(const char* name, std::uint64_t si
102103
}
103104

104105
auto& sess = session();
105-
mock::LockGuard lock(sess);
106+
std::lock_guard lock(sess);
106107

107108
if (sess.findRegionByName(name) != nullptr) {
108109
throw Fam_Exception(std::string("Region already exists: ") + name, FAM_ERR_ALREADYEXIST);
@@ -132,7 +133,7 @@ Fam_Region_Descriptor* fam::fam_lookup_region(const char* name) {
132133
}
133134

134135
auto& sess = session();
135-
mock::LockGuard lock(sess);
136+
std::lock_guard lock(sess);
136137

137138
const auto* region = sess.findRegionByName(name);
138139
if (!region) {
@@ -148,7 +149,7 @@ void fam::fam_destroy_region(Fam_Region_Descriptor* region_desc) {
148149
}
149150

150151
auto& sess = session();
151-
mock::LockGuard lock(sess);
152+
std::lock_guard lock(sess);
152153

153154
const auto regionId = region_desc->get_global_descriptor().regionId;
154155
auto* region = sess.findRegionById(regionId);
@@ -168,7 +169,7 @@ void fam::fam_resize_region(Fam_Region_Descriptor* region_desc, std::uint64_t si
168169
}
169170

170171
auto& sess = session();
171-
mock::LockGuard lock(sess);
172+
std::lock_guard lock(sess);
172173

173174
auto& region = sess.findRegion(region_desc);
174175
region.size = size;
@@ -184,7 +185,7 @@ void fam::fam_stat(Fam_Region_Descriptor* region_desc, Fam_Stat* info) {
184185
}
185186

186187
auto& sess = session();
187-
mock::LockGuard lock(sess);
188+
std::lock_guard lock(sess);
188189

189190
const auto& region = sess.findRegion(region_desc);
190191
info->size = region.size;
@@ -208,7 +209,7 @@ Fam_Descriptor* fam::fam_allocate(const char* name, std::uint64_t size, mode_t p
208209
}
209210

210211
auto& sess = session();
211-
mock::LockGuard lock(sess);
212+
std::lock_guard lock(sess);
212213

213214
auto& region = sess.findRegion(region_desc);
214215

@@ -260,7 +261,7 @@ Fam_Descriptor* fam::fam_lookup(const char* object_name, const char* region_name
260261
}
261262

262263
auto& sess = session();
263-
mock::LockGuard lock(sess);
264+
std::lock_guard lock(sess);
264265

265266
auto* region = sess.findRegionByName(region_name);
266267
if (!region) {
@@ -281,7 +282,7 @@ void fam::fam_deallocate(Fam_Descriptor* object) {
281282
}
282283

283284
auto& sess = session();
284-
mock::LockGuard lock(sess);
285+
std::lock_guard lock(sess);
285286

286287
const auto regionId = object->get_global_descriptor().regionId;
287288
const auto objectOffset = object->get_global_descriptor().offset;
@@ -321,7 +322,7 @@ void fam::fam_stat(Fam_Descriptor* object, Fam_Stat* info) {
321322
}
322323

323324
auto& sess = session();
324-
mock::LockGuard lock(sess);
325+
std::lock_guard lock(sess);
325326

326327
const auto& obj = sess.findObject(object);
327328
info->size = obj.size;
@@ -341,7 +342,7 @@ void fam::fam_put_blocking(void* buffer, Fam_Descriptor* obj, std::uint64_t offs
341342
}
342343

343344
auto& sess = session();
344-
mock::LockGuard lock(sess);
345+
std::lock_guard lock(sess);
345346

346347
auto& sobj = sess.findObject(obj);
347348
if (offset > sobj.size || length > (sobj.size - offset)) {
@@ -356,7 +357,7 @@ void fam::fam_get_blocking(void* buffer, Fam_Descriptor* obj, std::uint64_t offs
356357
}
357358

358359
auto& sess = session();
359-
mock::LockGuard lock(sess);
360+
std::lock_guard lock(sess);
360361

361362
const auto& sobj = sess.findObject(obj);
362363
if (offset > sobj.size || length > (sobj.size - offset)) {
@@ -370,7 +371,7 @@ void fam::fam_get_blocking(void* buffer, Fam_Descriptor* obj, std::uint64_t offs
370371
#define OPENFAM_MOCK_DEFINE_FETCH(TYPE, suffix) \
371372
TYPE fam::fam_fetch_##suffix(Fam_Descriptor* obj, std::uint64_t offset) { \
372373
auto& sess = session(); \
373-
mock::LockGuard lock(sess); \
374+
std::lock_guard lock(sess); \
374375
auto& sobj = sess.findObject(obj); \
375376
return typed_fetch<TYPE>(sess.objectData(sobj), sobj.size, offset); \
376377
}
@@ -388,7 +389,7 @@ OPENFAM_MOCK_DEFINE_FETCH(double, double)
388389
#define OPENFAM_MOCK_DEFINE_SET(TYPE) \
389390
void fam::fam_set(Fam_Descriptor* obj, std::uint64_t offset, TYPE value) { \
390391
auto& sess = session(); \
391-
mock::LockGuard lock(sess); \
392+
std::lock_guard lock(sess); \
392393
auto& sobj = sess.findObject(obj); \
393394
typed_store<TYPE>(sess.objectData(sobj), sobj.size, offset, value); \
394395
}
@@ -406,7 +407,7 @@ OPENFAM_MOCK_DEFINE_SET(double)
406407
#define OPENFAM_MOCK_DEFINE_ADD(TYPE) \
407408
void fam::fam_add(Fam_Descriptor* obj, std::uint64_t offset, TYPE value) { \
408409
auto& sess = session(); \
409-
mock::LockGuard lock(sess); \
410+
std::lock_guard lock(sess); \
410411
auto& sobj = sess.findObject(obj); \
411412
auto* data = sess.objectData(sobj); \
412413
auto current = typed_fetch<TYPE>(data, sobj.size, offset); \
@@ -425,7 +426,7 @@ OPENFAM_MOCK_DEFINE_ADD(double)
425426
#define OPENFAM_MOCK_DEFINE_SUB(TYPE) \
426427
void fam::fam_subtract(Fam_Descriptor* obj, std::uint64_t offset, TYPE value) { \
427428
auto& sess = session(); \
428-
mock::LockGuard lock(sess); \
429+
std::lock_guard lock(sess); \
429430
auto& sobj = sess.findObject(obj); \
430431
auto* data = sess.objectData(sobj); \
431432
auto current = typed_fetch<TYPE>(data, sobj.size, offset); \
@@ -444,7 +445,7 @@ OPENFAM_MOCK_DEFINE_SUB(double)
444445
#define OPENFAM_MOCK_DEFINE_SWAP(TYPE) \
445446
TYPE fam::fam_swap(Fam_Descriptor* obj, std::uint64_t offset, TYPE value) { \
446447
auto& sess = session(); \
447-
mock::LockGuard lock(sess); \
448+
std::lock_guard lock(sess); \
448449
auto& sobj = sess.findObject(obj); \
449450
auto* data = sess.objectData(sobj); \
450451
auto old = typed_fetch<TYPE>(data, sobj.size, offset); \
@@ -464,7 +465,7 @@ OPENFAM_MOCK_DEFINE_SWAP(double)
464465
#define OPENFAM_MOCK_DEFINE_CAS(TYPE) \
465466
TYPE fam::fam_compare_swap(Fam_Descriptor* obj, std::uint64_t offset, TYPE old_val, TYPE new_val) { \
466467
auto& sess = session(); \
467-
mock::LockGuard lock(sess); \
468+
std::lock_guard lock(sess); \
468469
auto& sobj = sess.findObject(obj); \
469470
auto* data = sess.objectData(sobj); \
470471
auto current = typed_fetch<TYPE>(data, sobj.size, offset); \

0 commit comments

Comments
 (0)