X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvppinfra%2Flock.h;h=337c5a3f0ad4bc5ca60cd04818afdeef05c4b8ef;hb=fc7344f;hp=dd79c40b7f277890da31ccd9da15f7eed7b1df4c;hpb=a332c46a51f9b4e13963340dfee1318e7513c124;p=vpp.git diff --git a/src/vppinfra/lock.h b/src/vppinfra/lock.h index dd79c40b7f2..337c5a3f0ad 100644 --- a/src/vppinfra/lock.h +++ b/src/vppinfra/lock.h @@ -57,7 +57,7 @@ static inline void clib_spinlock_init (clib_spinlock_t * p) { *p = clib_mem_alloc_aligned (CLIB_CACHE_LINE_BYTES, CLIB_CACHE_LINE_BYTES); - memset ((void *) *p, 0, CLIB_CACHE_LINE_BYTES); + clib_memset ((void *) *p, 0, CLIB_CACHE_LINE_BYTES); } static inline void @@ -73,7 +73,7 @@ clib_spinlock_free (clib_spinlock_t * p) static_always_inline void clib_spinlock_lock (clib_spinlock_t * p) { - while (__sync_lock_test_and_set (&(*p)->lock, 1)) + while (clib_atomic_test_and_set (&(*p)->lock)) CLIB_PAUSE (); CLIB_LOCK_DBG (p); } @@ -122,7 +122,7 @@ always_inline void clib_rwlock_init (clib_rwlock_t * p) { *p = clib_mem_alloc_aligned (CLIB_CACHE_LINE_BYTES, CLIB_CACHE_LINE_BYTES); - memset ((void *) *p, 0, CLIB_CACHE_LINE_BYTES); + clib_memset ((void *) *p, 0, CLIB_CACHE_LINE_BYTES); } always_inline void @@ -138,13 +138,13 @@ clib_rwlock_free (clib_rwlock_t * p) always_inline void clib_rwlock_reader_lock (clib_rwlock_t * p) { - while (__sync_lock_test_and_set (&(*p)->n_readers_lock, 1)) + while (clib_atomic_test_and_set (&(*p)->n_readers_lock)) CLIB_PAUSE (); (*p)->n_readers += 1; if ((*p)->n_readers == 1) { - while (__sync_lock_test_and_set (&(*p)->writer_lock, 1)) + while (clib_atomic_test_and_set (&(*p)->writer_lock)) CLIB_PAUSE (); } CLIB_MEMORY_BARRIER (); @@ -159,7 +159,7 @@ clib_rwlock_reader_unlock (clib_rwlock_t * p) ASSERT ((*p)->n_readers > 0); CLIB_LOCK_DBG_CLEAR (p); - while (__sync_lock_test_and_set (&(*p)->n_readers_lock, 1)) + while (clib_atomic_test_and_set (&(*p)->n_readers_lock)) CLIB_PAUSE (); (*p)->n_readers -= 1; @@ -176,7 +176,7 @@ clib_rwlock_reader_unlock (clib_rwlock_t * p) always_inline void clib_rwlock_writer_lock (clib_rwlock_t * p) { - while (__sync_lock_test_and_set (&(*p)->writer_lock, 1)) + while (clib_atomic_test_and_set (&(*p)->writer_lock)) CLIB_PAUSE (); CLIB_LOCK_DBG (p); }