diff --git a/src/libs/compat/freebsd_network/Condvar.cpp b/src/libs/compat/freebsd_network/Condvar.cpp index 81505ee405..c43273b8c2 100644 --- a/src/libs/compat/freebsd_network/Condvar.cpp +++ b/src/libs/compat/freebsd_network/Condvar.cpp @@ -54,20 +54,7 @@ init_condition_variables() void -uninit_condition_variables() -{ - ConditionVariableHashDefinition definition; - InterruptsSpinLocker hashLocker(sConditionVariablesLock); - ConditionVariable* variable = sConditionVariableHash.Clear(true); - hashLocker.Unlock(); - - while (variable != NULL) { - ConditionVariable* next = definition.GetLink(variable); - variable->Unpublish(); - delete variable; - variable = next; - } -} +uninit_condition_variables() {} } /* extern "C" */ diff --git a/src/libs/compat/freebsd_network/compat/sys/condvar.h b/src/libs/compat/freebsd_network/compat/sys/condvar.h index a646ba5bd9..a2ef47656e 100644 --- a/src/libs/compat/freebsd_network/compat/sys/condvar.h +++ b/src/libs/compat/freebsd_network/compat/sys/condvar.h @@ -10,7 +10,7 @@ struct cv { - int dummy; + const char* description; }; diff --git a/src/libs/compat/freebsd_network/condvar.c b/src/libs/compat/freebsd_network/condvar.c index 5c07802fb1..2251878a4e 100644 --- a/src/libs/compat/freebsd_network/condvar.c +++ b/src/libs/compat/freebsd_network/condvar.c @@ -12,7 +12,7 @@ void cv_init(struct cv* conditionVariable, const char* description) { - _cv_init(conditionVariable, description); + conditionVariable->description = description; } @@ -26,17 +26,25 @@ int cv_timedwait(struct cv* conditionVariable, struct mtx* mutex, int timeout) { int status; + _cv_init(conditionVariable, conditionVariable->description); + mtx_unlock(mutex); status = _cv_timedwait_unlocked(conditionVariable, timeout); mtx_lock(mutex); + _cv_destroy(conditionVariable); + return status; } void cv_wait(struct cv* conditionVariable, struct mtx* mutex) { + _cv_init(conditionVariable, conditionVariable->description); + mtx_unlock(mutex); _cv_wait_unlocked(conditionVariable); mtx_lock(mutex); + + _cv_destroy(conditionVariable); }