# define ZBX_MUTEX_NULL NULL
# define ZBX_MUTEX_LOG zbx_mutex_create_per_process_name(L"ZBX_MUTEX_LOG")
# define ZBX_MUTEX_PERFSTAT zbx_mutex_create_per_process_name(L"ZBX_MUTEX_PERFSTAT")
typedef wchar_t * zbx_mutex_name_t;
typedef HANDLE zbx_mutex_t;
#ifdef HAVE_VMINFO_T_UPDATES
#ifdef HAVE_PTHREAD_PROCESS_SHARED
# define ZBX_MUTEX_NULL NULL
# define ZBX_RWLOCK_NULL NULL
# define zbx_rwlock_wrlock(rwlock) __zbx_rwlock_wrlock(__FILE__, __LINE__, rwlock)
# define zbx_rwlock_rdlock(rwlock) __zbx_rwlock_rdlock(__FILE__, __LINE__, rwlock)
# define zbx_rwlock_unlock(rwlock) __zbx_rwlock_unlock(__FILE__, __LINE__, rwlock)
typedef pthread_mutex_t * zbx_mutex_t;
typedef pthread_rwlock_t * zbx_rwlock_t;
void __zbx_rwlock_wrlock(const char *filename, int line, zbx_rwlock_t rwlock);
void __zbx_rwlock_rdlock(const char *filename, int line, zbx_rwlock_t rwlock);
void __zbx_rwlock_unlock(const char *filename, int line, zbx_rwlock_t rwlock);
void zbx_rwlock_destroy(zbx_rwlock_t *rwlock);
void zbx_locks_disable(void);
void zbx_locks_enable(void);
# define ZBX_RWLOCK_NULL -1
# define ZBX_MUTEX_NULL -1
# define zbx_rwlock_wrlock(rwlock) __zbx_mutex_lock(__FILE__, __LINE__, rwlock)
# define zbx_rwlock_rdlock(rwlock) __zbx_mutex_lock(__FILE__, __LINE__, rwlock)
# define zbx_rwlock_unlock(rwlock) __zbx_mutex_unlock(__FILE__, __LINE__, rwlock)
# define zbx_rwlock_destroy(rwlock) zbx_mutex_destroy(rwlock)