These functions provide Mutual Exclusion objects management. More...
Macros | |
#define | EINA_MAIN_LOOP_CHECK_RETURN_VAL(val) |
The macro doesn't do anything unless EINA_HAVE_DEBUG_THREADS is defined. | |
#define | EINA_MAIN_LOOP_CHECK_RETURN |
The macro doesn't do anything unless EINA_HAVE_DEBUG_THREADS is defined. |
Typedefs | |
typedef void * | Eina_Lock |
typedef void * | Eina_RWLock |
typedef void * | Eina_Condition |
typedef void * | Eina_TLS |
typedef void * | Eina_Semaphore |
typedef struct _Eina_Lock | Eina_Lock |
Abtract type for a mutual exclusive object. |
Enumerations | |
enum | Eina_Lock_Result { EINA_LOCK_FAIL = EINA_FALSE, EINA_LOCK_SUCCEED = EINA_TRUE, EINA_LOCK_DEADLOCK } |
Functions | |
static Eina_Bool | eina_lock_new (Eina_Lock *mutex EINA_UNUSED) |
Create a new Eina_Lock. | |
static void | eina_lock_free (Eina_Lock *mutex EINA_UNUSED) |
Free the ressources of the given lock object. | |
static Eina_Lock_Result | eina_lock_take (Eina_Lock *mutex EINA_UNUSED) |
Lock the given mutual exclusion object. | |
static Eina_Lock_Result | eina_lock_take_try (Eina_Lock *mutex EINA_UNUSED) |
Try to lock the given mutual exclusion object. | |
static Eina_Lock_Result | eina_lock_release (Eina_Lock *mutex EINA_UNUSED) |
Unlock the given mutual exclusion object. | |
static void | eina_lock_debug (const Eina_Lock *mutex EINA_UNUSED) |
static Eina_Bool | eina_condition_new (Eina_Condition *cond EINA_UNUSED, Eina_Lock *mutex EINA_UNUSED) |
static void | eina_condition_free (Eina_Condition *cond EINA_UNUSED) |
static Eina_Bool | eina_condition_wait (Eina_Condition *cond EINA_UNUSED) |
static Eina_Bool | eina_condition_timedwait (Eina_Condition *cond EINA_UNUSED, double val EINA_UNUSED) |
static Eina_Bool | eina_condition_broadcast (Eina_Condition *cond EINA_UNUSED) |
static Eina_Bool | eina_condition_signal (Eina_Condition *cond EINA_UNUSED) |
static Eina_Bool | eina_rwlock_new (Eina_RWLock *mutex EINA_UNUSED) |
static void | eina_rwlock_free (Eina_RWLock *mutex EINA_UNUSED) |
static Eina_Lock_Result | eina_rwlock_read_take (Eina_RWLock *mutex EINA_UNUSED) |
static Eina_Lock_Result | eina_rwlock_write_take (Eina_RWLock *mutex EINA_UNUSED) |
static Eina_Lock_Result | eina_rwlock_release (Eina_RWLock *mutex EINA_UNUSED) |
static Eina_Lock_Result | eina_rwlock_take_read (Eina_RWLock *mutex EINA_UNUSED) |
static Eina_Lock_Result | eina_rwlock_take_write (Eina_RWLock *mutex EINA_UNUSED) |
static Eina_Bool | eina_tls_new (Eina_TLS *key EINA_UNUSED) |
static void | eina_tls_free (Eina_TLS key EINA_UNUSED) |
static void * | eina_tls_get (Eina_TLS key EINA_UNUSED) |
static Eina_Bool | eina_tls_set (Eina_TLS key EINA_UNUSED, const void *data EINA_UNUSED) |
static Eina_Bool | eina_semaphore_new (Eina_Semaphore *sem EINA_UNUSED, int count_init EINA_UNUSED) |
static Eina_Bool | eina_semaphore_free (Eina_Semaphore *sem EINA_UNUSED) |
static Eina_Bool | eina_semaphore_lock (Eina_Semaphore *sem EINA_UNUSED) |
static Eina_Bool | eina_semaphore_release (Eina_Semaphore *sem EINA_UNUSED, int count_release EINA_UNUSED) |
Variables | |
Eina_Error | EINA_ERROR_NOT_MAIN_LOOP |
Detailed Description
These functions provide Mutual Exclusion objects management.
- Note
- On Windows XP, critical sections are used, while on Windows CE, standard Mutex objects are used.
Macro Definition Documentation
#define EINA_MAIN_LOOP_CHECK_RETURN_VAL | ( | val | ) |
The macro doesn't do anything unless EINA_HAVE_DEBUG_THREADS is defined.
- Parameters
-
val The value to be returned.
Function Documentation
Create a new Eina_Lock.
- Parameters
-
mutex A pointer to the lock object.
- Returns
- EINA_TRUE on success, EINA_FALSE otherwise.
This function creates a new Eina_Lock object and stores it in the mutex
buffer. On success, this function returns EINA_TRUE and EINA_FALSE otherwise. To free the resources allocated by this function, use eina_lock_free(). For performance reasons, no check is done on mutex
.
References EINA_TRUE.
Referenced by eina_file_open().
|
inlinestatic |
Free the ressources of the given lock object.
- Parameters
-
mutex The lock object to free.
This function frees the resources of mutex
allocated by eina_lock_new(). For performance reasons, no check is done on mutex
.
|
inlinestatic |
Lock the given mutual exclusion object.
- Parameters
-
mutex The lock object to lock.
- Returns
- EINA_TRUE on success, EINA_FALSE otherwise.
This function locks mutex
. mutex
must have been created by eina_lock_new(). On success, this function returns EINA_TRUE and EINA_FALSE otherwise. For performance reasons, no check is done on mutex
.
Referenced by eina_file_close(), eina_file_map_all(), eina_file_map_faulted(), eina_file_map_free(), eina_file_map_new(), eina_file_open(), eina_stringshare_add_length(), eina_stringshare_del(), and eina_stringshare_ref().
|
inlinestatic |
Try to lock the given mutual exclusion object.
- Parameters
-
mutex The lock object to try to lock.
- Returns
- EINA_TRUE on success, EINA_FALSE otherwise.
This function tries to lock mutex
. mutex
must have been created by eina_lock_new(). If mutex
can be locked, this function returns EINA_TRUE; if mutex
can not be locked, or is already locked, it returns EINA_FALSE. This function does not block and returns immediately. For performance reasons, no check is done on mutex
.
- Note
- On Windows CE, this function is actually eina_lock_take().
|
inlinestatic |
Unlock the given mutual exclusion object.
- Parameters
-
mutex The lock object to unlock.
- Returns
- EINA_TRUE on success, EINA_FALSE otherwise.
This function unlocks mutex
. mutex
must have been created by eina_lock_new(). On success, this function returns EINA_TRUE and EINA_FALSE otherwise. For performance reasons, no check is done on mutex
.
Referenced by eina_file_close(), eina_file_map_all(), eina_file_map_faulted(), eina_file_map_free(), eina_file_map_new(), eina_file_open(), eina_stringshare_add_length(), eina_stringshare_del(), and eina_stringshare_ref().