mt_support.h
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:2k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. /*
  2.  * mt_support.h - multi-thread resource locking support declarations 
  3.  */
  4. /*
  5.  * Author: Markku Laukkanen
  6.  * Created: 6-Sep-1999
  7.  * History:
  8.  *  8-Sep-1999 M. Slifcak method names changed;
  9.  *                        use array of resource locking structures.
  10.  */
  11. #ifndef MT_SUPPORT_H
  12. #define MT_SUPPORT_H
  13. #ifdef __cplusplus
  14. extern          "C" {
  15. #endif
  16.   
  17. /*
  18.  * Lock group identifiers 
  19.  */
  20. #define MT_LIBRARY_ID      0
  21. #define MT_APPLICATION_ID  1
  22. #define MT_TOKEN_ID        2
  23. #define MT_MAX_IDS         3    /* one greater than last from above */
  24. #define MT_MAX_SUBIDS      10
  25. /*
  26.  * Lock resource identifiers for library resources 
  27.  */
  28. #define MT_LIB_NONE        0
  29. #define MT_LIB_SESSION     1
  30. #define MT_LIB_REQUESTID   2
  31. #define MT_LIB_MESSAGEID   3
  32. #define MT_LIB_SESSIONID   4
  33. #define MT_LIB_TRANSID     5
  34. #define MT_LIB_MAXIMUM     6    /* must be one greater than the last one */
  35. #if defined(NS_REENTRANT) || defined(WIN32)
  36. #if HAVE_PTHREAD_H
  37. #include <pthread.h>
  38. typedef pthread_mutex_t mutex_type;
  39. #ifdef pthread_mutexattr_default
  40. #define MT_MUTEX_INIT_DEFAULT pthread_mutexattr_default
  41. #else
  42. #define MT_MUTEX_INIT_DEFAULT 0
  43. #endif
  44. #elif defined(WIN32) || defined(cygwin)
  45. #include <windows.h>
  46. typedef CRITICAL_SECTION mutex_type;
  47. #else  /*  HAVE_PTHREAD_H  */
  48. error "There is no re-entrant support as defined."
  49. #endif /*  HAVE_PTHREAD_H  */
  50. int             snmp_res_init(void);
  51. int             snmp_res_lock(int groupID, int resourceID);
  52. int             snmp_res_unlock(int groupID, int resourceID);
  53. int             snmp_res_destroy_mutex(int groupID, int resourceID);
  54. #else /*  NS_REENTRANT  */
  55. #ifndef WIN32
  56. #define snmp_res_init() do {} while (0)
  57. #define snmp_res_lock(x,y) do {} while (0)
  58. #define snmp_res_unlock(x,y) do {} while (0)
  59. #define snmp_res_destroy_mutex(x,y) do {} while (0)
  60. #endif /*  WIN32  */
  61. #endif /*  NS_REENTRANT  */
  62. #ifdef __cplusplus
  63. }
  64. #endif
  65. #endif /*  MT_SUPPORT_H  */