mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-20 10:12:15 +01:00
r12191@catbus: nickm | 2007-03-15 15:33:37 -0400
Check return values from pthread_mutex functions. svn:r9862
This commit is contained in:
parent
194e0ae104
commit
f8f5ea10de
@ -38,8 +38,9 @@ Changes in version 0.2.0.1-alpha - 2007-??-??
|
||||
try to use \ consistently on windows and / consistently on unix: it
|
||||
makes the log messages nicer.
|
||||
|
||||
o Minor bugfixes:
|
||||
o Minor bugfixes (other):
|
||||
- Stop allowing hibernating servers to be "stable" or "fast".
|
||||
- Check return values from pthread_mutex functions.
|
||||
|
||||
o Minor bugfixes (controller), reported by daejees:
|
||||
- Make 'getinfo fingerprint' return a 551 error if we're not a
|
||||
|
@ -1248,30 +1248,50 @@ struct tor_mutex_t {
|
||||
tor_mutex_t *
|
||||
tor_mutex_new(void)
|
||||
{
|
||||
int err;
|
||||
tor_mutex_t *mutex = tor_malloc_zero(sizeof(tor_mutex_t));
|
||||
pthread_mutex_init(&mutex->mutex, NULL);
|
||||
err = pthread_mutex_init(&mutex->mutex, NULL);
|
||||
if (PREDICT_UNLIKELY(err)) {
|
||||
log_err(LD_GENERAL, "Error %d creating a mutex.", err);
|
||||
tor_fragile_assert();
|
||||
}
|
||||
return mutex;
|
||||
}
|
||||
/** Wait until <b>m</b> is free, then acquire it. */
|
||||
void
|
||||
tor_mutex_acquire(tor_mutex_t *m)
|
||||
{
|
||||
int err;
|
||||
tor_assert(m);
|
||||
pthread_mutex_lock(&m->mutex);
|
||||
err = pthread_mutex_lock(&m->mutex);
|
||||
if (PREDICT_UNLIKELY(err)) {
|
||||
log_err(LD_GENERAL, "Error %d locking a mutex.", err);
|
||||
tor_fragile_assert();
|
||||
}
|
||||
}
|
||||
/** Release the lock <b>m</b> so another thread can have it. */
|
||||
void
|
||||
tor_mutex_release(tor_mutex_t *m)
|
||||
{
|
||||
int err;
|
||||
tor_assert(m);
|
||||
pthread_mutex_unlock(&m->mutex);
|
||||
err = pthread_mutex_unlock(&m->mutex);
|
||||
if (PREDICT_UNLIKELY(err)) {
|
||||
log_err(LD_GENERAL, "Error %d unlocking a mutex.", err);
|
||||
tor_fragile_assert();
|
||||
}
|
||||
}
|
||||
/** Free all storage held by the lock <b>m</b>. */
|
||||
void
|
||||
tor_mutex_free(tor_mutex_t *m)
|
||||
{
|
||||
int err;
|
||||
tor_assert(m);
|
||||
pthread_mutex_destroy(&m->mutex);
|
||||
err = pthread_mutex_destroy(&m->mutex);
|
||||
if (PREDICT_UNLIKELY(err)) {
|
||||
log_err(LD_GENERAL, "Error %d destroying a mutex.", err);
|
||||
tor_fragile_assert();
|
||||
}
|
||||
tor_free(m);
|
||||
}
|
||||
/** Return an integer representing this thread. */
|
||||
|
Loading…
Reference in New Issue
Block a user