blob: fe437baa918b61c99644241033fc601acad273ac [file] [log] [blame]
/* snmp_locking.h - multi-thread resource locking support declarations */
/*
* Author: Markku Laukkanen
* Created: 6-Sep-1999
* History:
* 8-Sep-1999 M. Slifcak method names changed;
* use array of resource locking structures.
* 3-Jan-2001 R. Story copy mt_resource.h to snmp_locking.h
*/
#ifndef SNMP_LOCKING_H
#define SNMP_LOCKING__H
#ifdef __cplusplus
extern "C" {
#endif
#ifdef NS_REENTRANT
#if HAVE_PTHREAD_H
#include <pthread.h>
typedef pthread_mutex_t mutex_type;
#ifdef pthread_mutexattr_default
#define MT_MUTEX_INIT_DEFAULT pthread_mutexattr_default
#else
#define MT_MUTEX_INIT_DEFAULT 0
#endif
#elif defined(WIN32) || defined(cygwin)
#include <windows.h>
typedef CRITICAL_SECTION mutex_type;
#else
error "There is no re-entrant support as defined."
#endif
int netsnmp_mutex_init(&mutex_type);
int netsnmp_mutex_lock(&mutex_type);
int netsnmp_mutex_unlock(&mutex_type);
int netsnmp_mutex_destroy_mutex(&mutex_type);
#else /* !NS_REENTRANT */
#define netsnmp_mutex_init(x) do {} while (0)
#define netsnmp_mutex_lock(x) do {} while (0)
#define netsnmp_mutex_unlock(x) do {} while (0)
#define netsnmp_mutex_destroy_mutex(x) do {} while (0)
#endif /* !NS_REENTRANT */
#ifdef __cplusplus
}
#endif
#endif /* SNMP_LOCKING__H */