mirror of
https://github.com/isar/libmdbx.git
synced 2025-01-06 22:54:13 +08:00
mdbx: refine mdbx_mutex_failed().
This commit is contained in:
parent
5400ef6512
commit
3bae0723b7
@ -126,7 +126,8 @@ int mdbx_rpid_check(MDBX_env *env, mdbx_pid_t pid) {
|
|||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
static int mdbx_mutex_failed(MDBX_env *env, pthread_mutex_t *mutex, int rc);
|
static int mdbx_mutex_failed(MDBX_env *env, pthread_mutex_t *mutex,
|
||||||
|
const int rc);
|
||||||
|
|
||||||
int __cold mdbx_lck_init(MDBX_env *env) {
|
int __cold mdbx_lck_init(MDBX_env *env) {
|
||||||
pthread_mutexattr_t ma;
|
pthread_mutexattr_t ma;
|
||||||
@ -297,9 +298,10 @@ int __cold mdbx_lck_seize(MDBX_env *env) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int __cold mdbx_mutex_failed(MDBX_env *env, pthread_mutex_t *mutex,
|
static int __cold mdbx_mutex_failed(MDBX_env *env, pthread_mutex_t *mutex,
|
||||||
int rc) {
|
const int err) {
|
||||||
|
int rc = err;
|
||||||
#if MDBX_USE_ROBUST
|
#if MDBX_USE_ROBUST
|
||||||
if (rc == EOWNERDEAD) {
|
if (err == EOWNERDEAD) {
|
||||||
/* We own the mutex. Clean up after dead previous owner. */
|
/* We own the mutex. Clean up after dead previous owner. */
|
||||||
|
|
||||||
int rlocked = (env->me_lck && mutex == &env->me_lck->mti_rmutex);
|
int rlocked = (env->me_lck && mutex == &env->me_lck->mti_rmutex);
|
||||||
@ -331,10 +333,8 @@ static int __cold mdbx_mutex_failed(MDBX_env *env, pthread_mutex_t *mutex,
|
|||||||
}
|
}
|
||||||
#endif /* MDBX_USE_ROBUST */
|
#endif /* MDBX_USE_ROBUST */
|
||||||
|
|
||||||
mdbx_error("mutex (un)lock failed, %s", mdbx_strerror(rc));
|
mdbx_error("mutex (un)lock failed, %s", mdbx_strerror(err));
|
||||||
if (rc != EDEADLK) {
|
if (rc != EDEADLK)
|
||||||
env->me_flags |= MDBX_FATAL_ERROR;
|
env->me_flags |= MDBX_FATAL_ERROR;
|
||||||
rc = MDBX_PANIC;
|
|
||||||
}
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user