eina/lock: reorder inline posix lock functions

Summary: no functional changes

Reviewers: ManMower, devilhorns

Reviewed By: devilhorns

Subscribers: cedric, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6374
This commit is contained in:
Mike Blumenkrantz 2018-06-25 15:15:29 -04:00
parent a522bf5d76
commit 73ba4006bd
1 changed files with 55 additions and 55 deletions

View File

@ -197,6 +197,45 @@ eina_lock_free(Eina_Lock *mutex)
_eina_lock_free(mutex);
}
static inline Eina_Lock_Result
eina_lock_take_try(Eina_Lock *mutex)
{
Eina_Lock_Result ret = EINA_LOCK_FAIL;
int ok;
#ifdef EINA_HAVE_ON_OFF_THREADS
if (!_eina_threads_activated)
{
return EINA_LOCK_SUCCEED;
}
#endif
ok = pthread_mutex_trylock(&(mutex->mutex));
if (ok == 0) ret = EINA_LOCK_SUCCEED;
else if (ok == EDEADLK)
{
eina_lock_debug(mutex);
ret = EINA_LOCK_DEADLOCK;
}
else if (ok != EBUSY) EINA_LOCK_ABORT_DEBUG(ok, trylock, mutex);
#ifdef EINA_HAVE_DEBUG_THREADS
if (ret == EINA_LOCK_SUCCEED)
{
/* recursive locks can't make use of any of this */
if (mutex->recursive) return ret;
mutex->locked = 1;
mutex->lock_thread_id = pthread_self();
mutex->lock_bt_num = backtrace((void **)(mutex->lock_bt), EINA_LOCK_DEBUG_BT_NUM);
pthread_mutex_lock(&_eina_tracking_lock);
_eina_tracking = eina_inlist_append(_eina_tracking,
EINA_INLIST_GET(mutex));
pthread_mutex_unlock(&_eina_tracking_lock);
}
#endif
return ret;
}
static inline Eina_Lock_Result
eina_lock_take(Eina_Lock *mutex)
{
@ -264,45 +303,6 @@ eina_lock_take(Eina_Lock *mutex)
return ret;
}
static inline Eina_Lock_Result
eina_lock_take_try(Eina_Lock *mutex)
{
Eina_Lock_Result ret = EINA_LOCK_FAIL;
int ok;
#ifdef EINA_HAVE_ON_OFF_THREADS
if (!_eina_threads_activated)
{
return EINA_LOCK_SUCCEED;
}
#endif
ok = pthread_mutex_trylock(&(mutex->mutex));
if (ok == 0) ret = EINA_LOCK_SUCCEED;
else if (ok == EDEADLK)
{
eina_lock_debug(mutex);
ret = EINA_LOCK_DEADLOCK;
}
else if (ok != EBUSY) EINA_LOCK_ABORT_DEBUG(ok, trylock, mutex);
#ifdef EINA_HAVE_DEBUG_THREADS
if (ret == EINA_LOCK_SUCCEED)
{
/* recursive locks can't make use of any of this */
if (mutex->recursive) return ret;
mutex->locked = 1;
mutex->lock_thread_id = pthread_self();
mutex->lock_bt_num = backtrace((void **)(mutex->lock_bt), EINA_LOCK_DEBUG_BT_NUM);
pthread_mutex_lock(&_eina_tracking_lock);
_eina_tracking = eina_inlist_append(_eina_tracking,
EINA_INLIST_GET(mutex));
pthread_mutex_unlock(&_eina_tracking_lock);
}
#endif
return ret;
}
static inline Eina_Lock_Result
eina_lock_release(Eina_Lock *mutex)
{
@ -632,6 +632,22 @@ eina_spinlock_free(Eina_Spinlock *spinlock)
_eina_spinlock_free(spinlock);
}
static inline Eina_Lock_Result
eina_spinlock_take_try(Eina_Spinlock *spinlock)
{
#if defined(EINA_HAVE_POSIX_SPINLOCK)
int t = pthread_spin_trylock(spinlock);
if (t == 0) return EINA_LOCK_SUCCEED;
else if (t == EBUSY) return EINA_LOCK_FAIL;
else EINA_LOCK_ABORT_DEBUG(t, spin_trylock, spinlock);
return EINA_LOCK_FAIL;
#elif defined(EINA_HAVE_OSX_SPINLOCK)
return _eina_spinlock_macos_take_try(spinlock);
#else
return eina_lock_take_try(spinlock);
#endif
}
static inline Eina_Lock_Result
eina_spinlock_take(Eina_Spinlock *spinlock)
{
@ -653,22 +669,6 @@ eina_spinlock_take(Eina_Spinlock *spinlock)
#endif
}
static inline Eina_Lock_Result
eina_spinlock_take_try(Eina_Spinlock *spinlock)
{
#if defined(EINA_HAVE_POSIX_SPINLOCK)
int t = pthread_spin_trylock(spinlock);
if (t == 0) return EINA_LOCK_SUCCEED;
else if (t == EBUSY) return EINA_LOCK_FAIL;
else EINA_LOCK_ABORT_DEBUG(t, spin_trylock, spinlock);
return EINA_LOCK_FAIL;
#elif defined(EINA_HAVE_OSX_SPINLOCK)
return _eina_spinlock_macos_take_try(spinlock);
#else
return eina_lock_take_try(spinlock);
#endif
}
static inline Eina_Lock_Result
eina_spinlock_release(Eina_Spinlock *spinlock)
{