mdbx: workaround for FreeBSD shared mutexes initialization.

- pass inprocess_neighbor into mdbx_lck_init().
 - don't perform mutexes initialization if LCK already used in the current process.
 - don't perform additional in-process mutex initialization if LCK used in any other process(es), except for FreeBSD.
This commit is contained in:
Leonid Yuriev
2019-09-04 11:46:03 +03:00
parent 9ab5802aeb
commit 1829a2a5c1
4 changed files with 29 additions and 2 deletions

View File

@@ -657,7 +657,9 @@ mdbx_osal_16dot16_to_monotime(uint32_t seconds_16dot16);
/// НЕ должна инициализировать уже используемые разделяемые объекты
/// синхронизации расположенные в отображенном в память LCK-файле.
/// \return Код ошибки или 0 в случае успеха.
MDBX_INTERNAL_FUNC int mdbx_lck_init(MDBX_env *env, int global_uniqueness_flag);
MDBX_INTERNAL_FUNC int mdbx_lck_init(MDBX_env *env,
MDBX_env *inprocess_neighbor,
int global_uniqueness_flag);
/// \brief Отключение от общих межпроцесных объектов и разрушение объектов
/// синхронизации внутри текущего процесса связанных с экземпляром MDBX_env.