projects
/
silc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added preliminary Symbian support.
[silc.git]
/
lib
/
silcutil
/
unix
/
silcunixthread.c
diff --git
a/lib/silcutil/unix/silcunixthread.c
b/lib/silcutil/unix/silcunixthread.c
index 487faf051d1343591ade8af90addb71df65f77db..7f52de901daca7baafd9d1c1bca4aaf949e52ad3 100644
(file)
--- a/
lib/silcutil/unix/silcunixthread.c
+++ b/
lib/silcutil/unix/silcunixthread.c
@@
-104,9
+104,8
@@
SilcBool silc_thread_wait(SilcThread thread, void **exit_value)
struct SilcMutexStruct {
#ifdef SILC_THREADS
pthread_mutex_t mutex;
struct SilcMutexStruct {
#ifdef SILC_THREADS
pthread_mutex_t mutex;
-#else
- void *tmp;
#endif /* SILC_THREADS */
#endif /* SILC_THREADS */
+ unsigned int locked : 1;
};
SilcBool silc_mutex_alloc(SilcMutex *mutex)
};
SilcBool silc_mutex_alloc(SilcMutex *mutex)
@@
-116,6
+115,7
@@
SilcBool silc_mutex_alloc(SilcMutex *mutex)
if (*mutex == NULL)
return FALSE;
pthread_mutex_init(&(*mutex)->mutex, NULL);
if (*mutex == NULL)
return FALSE;
pthread_mutex_init(&(*mutex)->mutex, NULL);
+ (*mutex)->locked = FALSE;
return TRUE;
#else
return FALSE;
return TRUE;
#else
return FALSE;
@@
-137,7
+137,8
@@
void silc_mutex_lock(SilcMutex mutex)
#ifdef SILC_THREADS
if (mutex) {
if (pthread_mutex_lock(&mutex->mutex))
#ifdef SILC_THREADS
if (mutex) {
if (pthread_mutex_lock(&mutex->mutex))
- assert(FALSE);
+ SILC_ASSERT(FALSE);
+ mutex->locked = TRUE;
}
#endif /* SILC_THREADS */
}
}
#endif /* SILC_THREADS */
}
@@
-147,13
+148,22
@@
void silc_mutex_unlock(SilcMutex mutex)
#ifdef SILC_THREADS
if (mutex) {
if (pthread_mutex_unlock(&mutex->mutex))
#ifdef SILC_THREADS
if (mutex) {
if (pthread_mutex_unlock(&mutex->mutex))
- assert(FALSE);
+ SILC_ASSERT(FALSE);
+ mutex->locked = FALSE;
}
#endif /* SILC_THREADS */
}
}
#endif /* SILC_THREADS */
}
+void silc_mutex_assert_locked(SilcMutex mutex)
+{
+#ifdef SILC_THREADS
+ if (mutex)
+ SILC_ASSERT(mutex->locked);
+#endif /* SILC_THREADS */
+}
+
-/****************************
SILC Cond API
******************************/
+/****************************
** SILC Cond API *
******************************/
/* SILC Conditional Variable context */
struct SilcCondStruct {
/* SILC Conditional Variable context */
struct SilcCondStruct {