10
10
11
11
using namespace syncd ;
12
12
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)
14
15
15
16
#define VENDOR_CHECK_API_INITIALIZED () \
16
17
if (!m_apiInitialized) { \
@@ -202,7 +203,7 @@ sai_status_t VendorSai::set(
202
203
_In_ sai_object_id_t objectId,
203
204
_In_ const sai_attribute_t *attr)
204
205
{
205
- std::unique_lock<std::mutex > _lock (m_apimutex);
206
+ std::unique_lock<std::shared_mutex > _lock (m_apimutex);
206
207
SWSS_LOG_ENTER ();
207
208
VENDOR_CHECK_API_INITIALIZED ();
208
209
@@ -313,7 +314,7 @@ sai_status_t VendorSai::getStats(
313
314
_In_ const sai_stat_id_t *counter_ids,
314
315
_Out_ uint64_t *counters)
315
316
{
316
- MUTEX ();
317
+ SHARED_MUTEX ();
317
318
SWSS_LOG_ENTER ();
318
319
VENDOR_CHECK_API_INITIALIZED ();
319
320
@@ -351,7 +352,7 @@ sai_status_t VendorSai::getStatsExt(
351
352
_In_ sai_stats_mode_t mode,
352
353
_Out_ uint64_t *counters)
353
354
{
354
- MUTEX ();
355
+ SHARED_MUTEX ();
355
356
SWSS_LOG_ENTER ();
356
357
VENDOR_CHECK_API_INITIALIZED ();
357
358
@@ -366,7 +367,7 @@ sai_status_t VendorSai::clearStats(
366
367
_In_ uint32_t number_of_counters,
367
368
_In_ const sai_stat_id_t *counter_ids)
368
369
{
369
- MUTEX ();
370
+ SHARED_MUTEX ();
370
371
SWSS_LOG_ENTER ();
371
372
VENDOR_CHECK_API_INITIALIZED ();
372
373
@@ -386,7 +387,7 @@ sai_status_t VendorSai::bulkGetStats(
386
387
_Inout_ sai_status_t *object_statuses,
387
388
_Out_ uint64_t *counters)
388
389
{
389
- MUTEX ();
390
+ SHARED_MUTEX ();
390
391
SWSS_LOG_ENTER ();
391
392
VENDOR_CHECK_API_INITIALIZED ();
392
393
@@ -414,7 +415,7 @@ sai_status_t VendorSai::bulkClearStats(
414
415
_In_ sai_stats_mode_t mode,
415
416
_Inout_ sai_status_t *object_statuses)
416
417
{
417
- MUTEX ();
418
+ SHARED_MUTEX ();
418
419
SWSS_LOG_ENTER ();
419
420
VENDOR_CHECK_API_INITIALIZED ();
420
421
0 commit comments