@ -417,15 +417,15 @@ mdb_sem_wait(mdb_mutexref_t sem)
# define mdb_mutex_consistent(mutex) 0
# else /* MDB_USE_POSIX_MUTEX: */
/** Shared mutex/semaphore as it is stored (mdb_mutex_t), and as
* local variables keep it ( mdb_mutexref_t ) .
/** Shared mutex/semaphore as the original is stored.
*
* An mdb_mutex_t can be assigned to an mdb_mutexref_t . They can
* be the same , or an array [ size 1 ] and a pointer .
* @ {
* Not for copies . Instead it can be assigned to an # mdb_mutexref_t .
* When mdb_mutexref_t is a pointer and mdb_mutex_t is not , then it
* is array [ size 1 ] so it can be assigned to the pointer .
*/
typedef pthread_mutex_t mdb_mutex_t [ 1 ] , * mdb_mutexref_t ;
/* @} */
typedef pthread_mutex_t mdb_mutex_t [ 1 ] ;
/** Reference to an #mdb_mutex_t */
typedef pthread_mutex_t * mdb_mutexref_t ;
/** Lock the reader or writer mutex.
* Returns 0 or a code to give # mdb_mutex_failed ( ) , as in # LOCK_MUTEX ( ) .
*/
@ -463,7 +463,7 @@ typedef pthread_mutex_t mdb_mutex_t[1], *mdb_mutexref_t;
# define Z MDB_FMT_Z /**< printf/scanf format modifier for size_t */
# define Yu MDB_PRIy(u) /**< printf format for #mdb_size_t */
# define Yd MDB_PRIy(d) /**< printf format for "signed #mdb_size_t" */
# define Yd MDB_PRIy(d) /**< printf format for 'signed #mdb_size_t' */
# if defined(_WIN32) || defined(MDB_USE_POSIX_SEM)
# define MNAME_LEN 32
@ -973,19 +973,21 @@ typedef struct MDB_page {
/** Header for a single key/data pair within a page.
* Used in pages of type # P_BRANCH and # P_LEAF without # P_LEAF2 .
* We guarantee 2 - byte alignment for ' MDB_node ' s .
*
* # mn_lo and # mn_hi are used for data size on leaf nodes , and for child
* pgno on branch nodes . On 64 bit platforms , # mn_flags is also used
* for pgno . ( Branch nodes have no flags ) . Lo and hi are in host byte
* order in case some accesses can be optimized to 32 - bit word access .
*/
typedef struct MDB_node {
/** lo and hi are used for data size on leaf nodes and for
* child pgno on branch nodes . On 64 bit platforms , flags
* is also used for pgno . ( Branch nodes have no flags ) .
* They are in host byte order in case that lets some
* accesses be optimized into a 32 - bit word access .
*/
/** part of data size or pgno
* @ { */
# if BYTE_ORDER == LITTLE_ENDIAN
unsigned short mn_lo , mn_hi ; /**< part of data size or pgno */
unsigned short mn_lo , mn_hi ;
# else
unsigned short mn_hi , mn_lo ;
# endif
/** @} */
/** @defgroup mdb_node Node Flags
* @ ingroup internal
* Flags for node headers .