dwww Home | Manual pages | Find package

compat(3)                  Library Functions Manual                  compat(3)

NAME
       compat - Compatibility Macros

SYNOPSIS
   Macros
       #define MDB_DEVEL   0
       #define mdb_func_   '<mdb_unknown>'
       #define MDB_NO_ROOT   (MDB_LAST_ERRCODE + 10)
       #define MDB_USE_ROBUST   1
       #define THREAD_RET   void *
       #define THREAD_CREATE(thr,  start,  arg)
           pthread_create(&thr,NULL,start,arg)
       #define THREAD_FINISH(thr)   pthread_join(thr,NULL)
       #define Z   'z'
       #define MDB_PIDLOCK   1
       #define LOCK_MUTEX0(mutex)   pthread_mutex_lock(mutex)
       #define UNLOCK_MUTEX(mutex)   pthread_mutex_unlock(mutex)
       #define mdb_mutex_consistent(mutex)   pthread_mutex_consistent(mutex)
       #define ErrCode()   errno
       #define HANDLE   int
       #define INVALID_HANDLE_VALUE   (-1)
       #define GET_PAGESIZE(x)   ((x) = sysconf(_SC_PAGE_SIZE))
       #define MNAME_LEN   (sizeof(pthread_mutex_t))

   Typedefs
       typedef pthread_mutex_t mdb_mutex_t[1]
       typedef pthread_mutex_t * mdb_mutexref_t

Detailed Description
       A bunch of macros to minimize the amount of platform-specific ifdefs
       needed throughout the rest of the code. When the features this library
       needs are similar enough to POSIX to be hidden in a one-or-two line
       replacement, this macro approach is used.

Macro Definition Documentation
   #define MDB_DEVEL   0
       Features under development

   #define mdb_func_   '<mdb_unknown>'
       Wrapper around func, which is a C99 feature

   #define MDB_USE_ROBUST   1
       Some platforms define the EOWNERDEAD error code even though they don't
       support Robust Mutexes. Compile with -DMDB_USE_ROBUST=0, or use some
       other mechanism like -DMDB_USE_POSIX_SEM instead of
       -DMDB_USE_POSIX_MUTEX. (Posix semaphores are not robust.)

   #define Z   'z'
       printf format modifier for size_t

   #define MDB_PIDLOCK   1
       For MDB_LOCK_FORMAT: True if readers take a pid lock in the lockfile

   #define LOCK_MUTEX0(mutex)   pthread_mutex_lock(mutex)
       Lock the reader or writer mutex. Returns 0 or a code to give
       mdb_mutex_failed(), as in LOCK_MUTEX().

   #define UNLOCK_MUTEX(mutex)   pthread_mutex_unlock(mutex)
       Unlock the reader or writer mutex.

   #define mdb_mutex_consistent(mutex)   pthread_mutex_consistent(mutex)
       Mark mutex-protected data as repaired, after death of previous owner.

   #define ErrCode()   errno
       Get the error code for the last failed system function.

   #define HANDLE   int
       An abstraction for a file handle. On POSIX systems file handles are
       small integers. On Windows they're opaque pointers.

   #define INVALID_HANDLE_VALUE   (-1)
       A value for an invalid file handle. Mainly used to initialize file
       variables and signify that they are unused.

   #define GET_PAGESIZE(x)   ((x) = sysconf(_SC_PAGE_SIZE))
       Get the size of a memory page for the system. This is the basic size
       that the platform's memory manager uses, and is fundamental to the use
       of memory-mapped files.

Typedef Documentation
   typedef pthread_mutex_t mdb_mutex_t[1]
       Shared mutex/semaphore as the original is stored.

       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_mutexref_t
       Reference to an mdb_mutex_t

Author
       Generated automatically by Doxygen for LMDB from the source code.

LMDB                            Thu Mar 24 2022                      compat(3)

Generated by dwww version 1.14 on Fri Jan 24 06:13:46 CET 2025.