evthread_lock_callbacks - This structure describes the interface a threading
  library uses for locking.
#include <thread.h>
void *(* alloc )(unsigned locktype)
Function to allocate and initialize new lock of type 'locktype'.  void(*
  free )(void *lock, unsigned locktype)
Funtion to release all storage held in 'lock', which was created with type
  'locktype'.  int(* lock )(unsigned mode, void *lock)
Acquire an already-allocated lock at 'lock' with mode 'mode'.  int
  lock_api_version
The current version of the locking API.  unsigned
  supported_locktypes
Which kinds of locks does this version of the locking API support? A bitfield
  of EVTHREAD_LOCKTYPE_RECURSIVE and EVTHREAD_LOCKTYPE_READWRITE.  int(*
  unlock )(unsigned mode, void *lock)
Release a lock at 'lock' using mode 'mode'. 
This structure describes the interface a threading library uses for locking.
It's used to tell evthread_set_lock_callbacks() how to use
    locking on this platform.
Function to allocate and initialize new lock of type 'locktype'. Returns NULL on
  failure.
Funtion to release all storage held in 'lock', which was created with type
  'locktype'.
Acquire an already-allocated lock at 'lock' with mode 'mode'. Returns 0 on
  success, and nonzero on failure.
The current version of the locking API. Set this to EVTHREAD_LOCK_API_VERSION
Which kinds of locks does this version of the locking API support? A bitfield of
  EVTHREAD_LOCKTYPE_RECURSIVE and EVTHREAD_LOCKTYPE_READWRITE. (Note that
  RECURSIVE locks are currently mandatory, and READWRITE locks are not currently
  used.)
Release a lock at 'lock' using mode 'mode'. Returns 0 on success, and nonzero on
  failure.
Generated automatically by Doxygen for libevent from the source code.