2 * mt_support.h - multi-thread resource locking support declarations
5 * Author: Markku Laukkanen
8 * 8-Sep-1999 M. Slifcak method names changed;
9 * use array of resource locking structures.
20 * Lock group identifiers
23 #define MT_LIBRARY_ID 0
24 #define MT_APPLICATION_ID 1
27 #define MT_MAX_IDS 3 /* one greater than last from above */
28 #define MT_MAX_SUBIDS 10
32 * Lock resource identifiers for library resources
36 #define MT_LIB_SESSION 1
37 #define MT_LIB_REQUESTID 2
38 #define MT_LIB_MESSAGEID 3
39 #define MT_LIB_SESSIONID 4
40 #define MT_LIB_TRANSID 5
42 #define MT_LIB_MAXIMUM 6 /* must be one greater than the last one */
45 #if defined(NS_REENTRANT) || defined(WIN32)
49 typedef pthread_mutex_t mutex_type;
50 #ifdef pthread_mutexattr_default
51 #define MT_MUTEX_INIT_DEFAULT pthread_mutexattr_default
53 #define MT_MUTEX_INIT_DEFAULT 0
56 #elif defined(WIN32) || defined(cygwin)
59 typedef CRITICAL_SECTION mutex_type;
61 #else /* HAVE_PTHREAD_H */
62 error "There is no re-entrant support as defined."
63 #endif /* HAVE_PTHREAD_H */
66 int snmp_res_init(void);
67 int snmp_res_lock(int groupID, int resourceID);
68 int snmp_res_unlock(int groupID, int resourceID);
69 int snmp_res_destroy_mutex(int groupID, int resourceID);
71 #else /* NS_REENTRANT */
74 #define snmp_res_init() do {} while (0)
75 #define snmp_res_lock(x,y) do {} while (0)
76 #define snmp_res_unlock(x,y) do {} while (0)
77 #define snmp_res_destroy_mutex(x,y) do {} while (0)
80 #endif /* NS_REENTRANT */
85 #endif /* MT_SUPPORT_H */