forked from enlightenment/efl
formalise eina lock results to be equivalent to true/false with added
deadlock for try. SVN revision: 59101
This commit is contained in:
parent
afac2fdd18
commit
651cff4602
|
@ -51,6 +51,19 @@ struct _Eina_Lock
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef EINA_LOCK_DEBUG
|
||||||
|
# define EINA_LOCK_INITIALIZER { PTHREAD_MUTEX_INITIALIZER, 0, { 0 }, 0, 0 }
|
||||||
|
#else
|
||||||
|
# define EINA_LOCK_INITIALIZER { PTHREAD_MUTEX_INITIALIZER }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
EINA_LOCK_FAIL = EINA_FALSE,
|
||||||
|
EINA_LOCK_SUCCEED = EINA_TRUE,
|
||||||
|
EINA_LOCK_DEADLOCK
|
||||||
|
} Eina_Lock_Result;
|
||||||
|
|
||||||
EAPI extern Eina_Bool _eina_threads_activated;
|
EAPI extern Eina_Bool _eina_threads_activated;
|
||||||
|
|
||||||
#ifdef EINA_HAVE_DEBUG_THREADS
|
#ifdef EINA_HAVE_DEBUG_THREADS
|
||||||
|
@ -59,7 +72,7 @@ EAPI extern Eina_Bool _eina_threads_activated;
|
||||||
EAPI extern int _eina_threads_debug;
|
EAPI extern int _eina_threads_debug;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static inline Eina_Bool
|
static inline Eina_Lock_Result
|
||||||
eina_lock_new(Eina_Lock *mutex)
|
eina_lock_new(Eina_Lock *mutex)
|
||||||
{
|
{
|
||||||
pthread_mutexattr_t attr;
|
pthread_mutexattr_t attr;
|
||||||
|
@ -94,7 +107,7 @@ eina_lock_free(Eina_Lock *mutex)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline Eina_Bool
|
static inline Eina_Lock_Result
|
||||||
eina_lock_take(Eina_Lock *mutex)
|
eina_lock_take(Eina_Lock *mutex)
|
||||||
{
|
{
|
||||||
Eina_Bool ret;
|
Eina_Bool ret;
|
||||||
|
@ -128,7 +141,7 @@ eina_lock_take(Eina_Lock *mutex)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline Eina_Bool
|
static inline Eina_Lock_Result
|
||||||
eina_lock_take_try(Eina_Lock *mutex)
|
eina_lock_take_try(Eina_Lock *mutex)
|
||||||
{
|
{
|
||||||
Eina_Bool ret = EINA_FALSE;
|
Eina_Bool ret = EINA_FALSE;
|
||||||
|
@ -139,7 +152,7 @@ eina_lock_take_try(Eina_Lock *mutex)
|
||||||
else if (ok == EDEADLK)
|
else if (ok == EDEADLK)
|
||||||
{
|
{
|
||||||
printf("ERROR ERROR: DEADLOCK on lock %p\n", mutex);
|
printf("ERROR ERROR: DEADLOCK on lock %p\n", mutex);
|
||||||
ret = 2; // magic
|
ret = EINA_LOCK_DEADLOCK; // magic
|
||||||
}
|
}
|
||||||
#ifdef EINA_LOCK_DEBUG
|
#ifdef EINA_LOCK_DEBUG
|
||||||
if (ret == EINA_TRUE)
|
if (ret == EINA_TRUE)
|
||||||
|
@ -152,7 +165,7 @@ eina_lock_take_try(Eina_Lock *mutex)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline Eina_Bool
|
static inline Eina_Lock_Result
|
||||||
eina_lock_release(Eina_Lock *mutex)
|
eina_lock_release(Eina_Lock *mutex)
|
||||||
{
|
{
|
||||||
Eina_Bool ret;
|
Eina_Bool ret;
|
||||||
|
|
Loading…
Reference in New Issue