diff options
Diffstat (limited to 'include/net-snmp/library/mt_support.h')
-rw-r--r-- | include/net-snmp/library/mt_support.h | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/include/net-snmp/library/mt_support.h b/include/net-snmp/library/mt_support.h new file mode 100644 index 0000000..4e35d33 --- /dev/null +++ b/include/net-snmp/library/mt_support.h @@ -0,0 +1,89 @@ +/* + * mt_support.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. + */ + +#ifndef MT_SUPPORT_H +#define MT_SUPPORT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Lock group identifiers + */ + +#define MT_LIBRARY_ID 0 +#define MT_APPLICATION_ID 1 +#define MT_TOKEN_ID 2 + +#define MT_MAX_IDS 3 /* one greater than last from above */ +#define MT_MAX_SUBIDS 10 + + +/* + * Lock resource identifiers for library resources + */ + +#define MT_LIB_NONE 0 +#define MT_LIB_SESSION 1 +#define MT_LIB_REQUESTID 2 +#define MT_LIB_MESSAGEID 3 +#define MT_LIB_SESSIONID 4 +#define MT_LIB_TRANSID 5 + +#define MT_LIB_MAXIMUM 6 /* must be one greater than the last one */ + + +#if defined(NETSNMP_REENTRANT) || defined(WIN32) + +#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 /* HAVE_PTHREAD_H */ +error "There is no re-entrant support as defined." +#endif /* HAVE_PTHREAD_H */ + + +NETSNMP_IMPORT +int snmp_res_init(void); +NETSNMP_IMPORT +int snmp_res_lock(int groupID, int resourceID); +NETSNMP_IMPORT +int snmp_res_unlock(int groupID, int resourceID); +NETSNMP_IMPORT +int snmp_res_destroy_mutex(int groupID, int resourceID); + +#else /* NETSNMP_REENTRANT */ + +#ifndef WIN32 +#define snmp_res_init() do {} while (0) +#define snmp_res_lock(x,y) do {} while (0) +#define snmp_res_unlock(x,y) do {} while (0) +#define snmp_res_destroy_mutex(x,y) do {} while (0) +#endif /* WIN32 */ + +#endif /* NETSNMP_REENTRANT */ + +#ifdef __cplusplus +} +#endif +#endif /* MT_SUPPORT_H */ |