Skip to content

Commit 32ed1c2

Browse files
committed
Use shared mutex for vendor SAI mutex
Signed-off-by: Stephen Sun <[email protected]>
1 parent fe650bb commit 32ed1c2

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

syncd/VendorSai.cpp

+8-7
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010

1111
using namespace syncd;
1212

13-
#define MUTEX() std::lock_guard<std::mutex> _lock(m_apimutex)
13+
#define MUTEX() std::unique_lock<std::shared_mutex> _lock(m_apimutex)
14+
#define SHARED_MUTEX() std::shared_lock<std::shared_mutex> _shared_lock(m_apimutex)
1415

1516
#define VENDOR_CHECK_API_INITIALIZED() \
1617
if (!m_apiInitialized) { \
@@ -202,7 +203,7 @@ sai_status_t VendorSai::set(
202203
_In_ sai_object_id_t objectId,
203204
_In_ const sai_attribute_t *attr)
204205
{
205-
std::unique_lock<std::mutex> _lock(m_apimutex);
206+
std::unique_lock<std::shared_mutex> _lock(m_apimutex);
206207
SWSS_LOG_ENTER();
207208
VENDOR_CHECK_API_INITIALIZED();
208209

@@ -313,7 +314,7 @@ sai_status_t VendorSai::getStats(
313314
_In_ const sai_stat_id_t *counter_ids,
314315
_Out_ uint64_t *counters)
315316
{
316-
MUTEX();
317+
SHARED_MUTEX();
317318
SWSS_LOG_ENTER();
318319
VENDOR_CHECK_API_INITIALIZED();
319320

@@ -351,7 +352,7 @@ sai_status_t VendorSai::getStatsExt(
351352
_In_ sai_stats_mode_t mode,
352353
_Out_ uint64_t *counters)
353354
{
354-
MUTEX();
355+
SHARED_MUTEX();
355356
SWSS_LOG_ENTER();
356357
VENDOR_CHECK_API_INITIALIZED();
357358

@@ -366,7 +367,7 @@ sai_status_t VendorSai::clearStats(
366367
_In_ uint32_t number_of_counters,
367368
_In_ const sai_stat_id_t *counter_ids)
368369
{
369-
MUTEX();
370+
SHARED_MUTEX();
370371
SWSS_LOG_ENTER();
371372
VENDOR_CHECK_API_INITIALIZED();
372373

@@ -386,7 +387,7 @@ sai_status_t VendorSai::bulkGetStats(
386387
_Inout_ sai_status_t *object_statuses,
387388
_Out_ uint64_t *counters)
388389
{
389-
MUTEX();
390+
SHARED_MUTEX();
390391
SWSS_LOG_ENTER();
391392
VENDOR_CHECK_API_INITIALIZED();
392393

@@ -414,7 +415,7 @@ sai_status_t VendorSai::bulkClearStats(
414415
_In_ sai_stats_mode_t mode,
415416
_Inout_ sai_status_t *object_statuses)
416417
{
417-
MUTEX();
418+
SHARED_MUTEX();
418419
SWSS_LOG_ENTER();
419420
VENDOR_CHECK_API_INITIALIZED();
420421

syncd/VendorSai.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ extern "C" {
1010
#include <vector>
1111
#include <memory>
1212
#include <mutex>
13+
#include <shared_mutex>
1314
#include <map>
1415

1516
namespace syncd
@@ -223,7 +224,7 @@ namespace syncd
223224

224225
bool m_apiInitialized;
225226

226-
std::mutex m_apimutex;
227+
std::shared_mutex m_apimutex;
227228

228229
sai_service_method_table_t m_service_method_table;
229230

0 commit comments

Comments
 (0)