home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / armsdk20.zip / arm201.h next >
C/C++ Source or Header  |  2002-09-18  |  11KB  |  310 lines

  1. #ifndef ARM_H_INCLUDED
  2. #define ARM_H_INCLUDED
  3.  
  4. /****************************************************************************/
  5. /* arm.h - ARM API Definitions                                              */
  6. /****************************************************************************/
  7.  
  8. #include <sys/types.h>     /* C types  definitions */
  9.  
  10. /*  Type definitions for various field sizes */
  11.  
  12. /*  64-bit integer compiler support                                         */
  13. /*                                                                          */
  14. /*  If a type declaration supporting 64 bit integer arithmatic is defined   */
  15. /*  for the target platform and compiler, the "ARM_INT64" #define should be */
  16. /*  set to that type declaration. E.g.,                                     */
  17. /*                                                                          */
  18. /*         #define ARM_INT64 long long   (for unix)                         */
  19. /*                  or                                                      */
  20. /*         #define ARM_INT64 _int64      (for NT)                           */
  21. /*                                                                          */
  22. /*  If 64 bit arithmetic is not supported on the target platform or         */
  23. /*  compiler, remove (or comment out) the "ARM_INT64" #define so that the   */
  24. /*  structures of two 32 bit values will be defined for the 64 bit fields.  */
  25. /*                                                                          */
  26. /*  Little endian support                                                   */
  27. /*                                                                          */
  28. /*  On hardware platforms which are little endian (such as x86 platforms),  */
  29. /*  if 64 bit arithmetic is not supported, the "LITTLE_ENDIAN" #define      */
  30. /*  should be set to 1.  This  will ensure that the upper and lower words   */
  31. /*  of the 64 bit value are stored in the correct order.                    */
  32.  
  33. /*
  34. #define ARM_INT64 long long
  35. */
  36.  
  37. /* 
  38. #define LITTLE_ENDIAN  1
  39. */
  40.  
  41.  
  42. typedef unsigned char  arm_bit8_t;
  43. typedef short arm_int16_t;
  44. typedef long  arm_int32_t;
  45. typedef unsigned char  arm_unsigned8_t;
  46. typedef unsigned short arm_unsigned16_t;
  47. typedef unsigned long  arm_unsigned32_t;
  48.  
  49. #ifdef ARM_INT64
  50. typedef ARM_INT64 arm_int64_t;
  51. typedef unsigned ARM_INT64 arm_unsigned64_t;
  52. #else
  53. #ifdef LITTLE_ENDIAN
  54. typedef struct arm_int64_t {
  55.     arm_int32_t   lower;
  56.     arm_int32_t   upper;
  57. } arm_int64_t;
  58.  
  59. typedef struct arm_unsigned64 {
  60.     arm_unsigned32_t   lower;
  61.     arm_unsigned32_t   upper;
  62. } arm_unsigned64_t;
  63. #else
  64. typedef struct arm_int64_t {
  65.     arm_int32_t   upper;
  66.     arm_int32_t   lower;
  67. } arm_int64_t;
  68.  
  69. typedef struct arm_unsigned64 {
  70.     arm_unsigned32_t   upper;
  71.     arm_unsigned32_t   lower;
  72. } arm_unsigned64_t;
  73. #endif
  74. #endif
  75.  
  76.  
  77.  
  78. /***    Symbol definitions    ***/
  79.  
  80.  
  81. /*  Enumeration of transaction status completion codes */
  82.  
  83. enum arm_tran_status_e { ARM_GOOD = 0, ARM_ABORT, ARM_FAILED };
  84.  
  85.  
  86. /*  Enumeration of user data formats */
  87.  
  88. enum arm_userdata_e { ARM_Format1 = 1, ARM_Format2, ARM_Format101 = 101 };
  89.  
  90.  
  91. /*  Enumeration of metric types */
  92.  
  93. typedef enum arm_metric_type_e {
  94.         ARM_Counter32 = 1, ARM_Counter64, ARM_CntrDivr32,
  95.         ARM_Gauge32, ARM_Gauge64, ARM_GaugeDivr32, ARM_NumericID32,
  96.         ARM_NumericID64, ARM_String8, ARM_String32,
  97.         ARM_MetricTypeLast 
  98. } arm_metric_type_e;
  99.  
  100.  
  101. /***    Data definitions    ***/
  102.  
  103.  
  104. /*  User metric structures */
  105.  
  106. typedef struct arm_cntrdivr32_t {        /*  Counter32 + Divisor32  */
  107.     arm_unsigned32_t  count;
  108.     arm_unsigned32_t  divisor;
  109. } arm_cntrdivr32_t;
  110.  
  111. typedef struct arm_gaugedivr32_t {        /*  Gauge32 + Divisor32  */
  112.     arm_int32_t       gauge;
  113.     arm_unsigned32_t  divisor;
  114. } arm_gaugedivr32_t;
  115.  
  116.  
  117. /*  Union of user ARM_Format1 metric types */
  118.  
  119. typedef union arm_user_metric1_u {
  120.     arm_unsigned32_t  counter32;       /*  Counter32  */
  121.     arm_unsigned64_t  counter64;       /*  Counter64  */
  122.     arm_cntrdivr32_t  cntrdivr32;      /*  Counter32 + Divisor32  */
  123.     arm_int32_t          gauge32;         /*  Gauge32  */
  124.     arm_int64_t          gauge64;         /*  Gauge64  */
  125.     arm_gaugedivr32_t gaugedivr32;     /*  Gauge32 + Divisor32  */
  126.     arm_unsigned32_t  numericid32;     /*  NumericID32  */
  127.     arm_unsigned64_t  numericid64;     /*  NumericID64  */
  128.     char              string8[8];      /*  String8  */
  129. } arm_user_metric1_u;
  130.  
  131.  
  132. /*  Application view of correlator */
  133.  
  134. typedef struct arm_app_correlator_t {
  135.     arm_int16_t length;            /*  Length of the correlator  */
  136.     char        agent_data[166];   /*  Agent-specific data fields  */
  137. } arm_app_correlator_t;
  138.  
  139.  
  140. /*  User metrics ARM_Format1 structure definition */
  141.  
  142. typedef struct arm_user_data1_t {
  143.     arm_int32_t          format;        /*  Version/format id (userdata_e)  */
  144.     arm_bit8_t           flags[4];      /*  Flags for metrics' presence  */
  145.     arm_user_metric1_u   metric[6];     /*  User metrics  */
  146.     char                 string32[32];  /*  32 byte non-terminated string  */
  147.     arm_app_correlator_t correlator;    /*  Correlator  */
  148. } arm_user_data1_t;
  149.  
  150.  
  151. /*  User metrics ARM_Format2 structure definition */
  152.  
  153. typedef struct arm_user_data2_t {
  154.     arm_int32_t   format;               /*  Version/format id (userdata_e)  */
  155.     char          string1020[1020];     /*  1020 byte opaque blob  */
  156. } arm_user_data2_t;
  157.  
  158.  
  159. /*  User metric meta-data for ARM_Format101 structure */
  160.  
  161. typedef struct arm_user_meta101_t {
  162.     arm_int32_t type;       /*  Type of metric (arm_user_metric_e)  */
  163.     char        name[44];   /*  NULL-terminated string <= 44 char  */
  164. } arm_user_meta101_t;
  165.  
  166.  
  167. /*  User meta-data ARM_Format101 structure definition */
  168.  
  169. typedef struct arm_user_data101_t {
  170.     arm_int32_t        format;     /* Version/format id (userdata_e)  */
  171.     arm_bit8_t         flags[4];   /*  Flags for which fields are present  */
  172.     arm_user_meta101_t meta[7];       /*  User metrics meta-data  */
  173. } arm_user_data101_t;
  174.  
  175.  
  176. /*  Flag bit definitions (within bit8 fields) */
  177.  
  178. /*  flags[0] in arm_user_data1_t passed in arm_start */
  179. #define ARM_CorrPar_f   0x80    /*  Correlator from parent  */
  180. #define ARM_CorrReq_f   0x40    /*  Request correlator generation  */
  181. #define ARM_CorrGen_f   0x20    /*  New correlator generated in data  */
  182. #define ARM_TraceReq_f  0x10    /*  User trace request  */
  183.  
  184. /*  flags[1] in arm_user_data101_t passed in arm_get_id and */
  185. /*  flags[1] in arm_user_data1_t passed in arm_start, arm_update and arm_end */
  186. #define ARM_Metric1_f    0x80   /*  Metric 1 present  */
  187. #define ARM_Metric2_f    0x40   /*  Metric 2 present  */
  188. #define ARM_Metric3_f    0x20   /*  Metric 3 present  */
  189. #define ARM_Metric4_f    0x10   /*  Metric 4 present  */
  190. #define ARM_Metric5_f    0x08   /*  Metric 5 present  */
  191. #define ARM_Metric6_f    0x04   /*  Metric 6 present  */
  192. #define ARM_AllMetrics_f 0xfc   /*  Metrics 1 - 6 present  */
  193. #define ARM_String1_f    0x02   /*  String 1 present  */
  194.  
  195.  
  196. #if defined  _WIN32
  197.  #include <windows.h>
  198.  #define ARM_API WINAPI
  199. #elif defined __OS2__
  200.  #define ARM_API _Pascal
  201. #elif defined _OS216
  202.  #define  arm_data_t char _far
  203.  #define  arm_ptr_t  char _far
  204.  #define ARM_API _far _pascal
  205. #elif defined _WIN16 || _WINDOWS
  206.  #include <windows.h>
  207.  typedef BOOL (FAR PASCAL _export * FPSTRCB) (LPSTR, LPVOID);
  208.  #define  arm_data_t char FAR
  209.  #define  arm_ptr_t  char FAR
  210.  #define ARM_API WINAPI
  211. #else  /* unix */
  212. #define ARM_API
  213. #endif
  214.  
  215.  
  216. #ifdef __cplusplus
  217. extern "C" {
  218. #endif /* __cplusplus */
  219.  
  220. #ifdef _PROTOTYPES
  221.  
  222. /***    Function prototypes    ***/
  223.  
  224. extern arm_int32_t ARM_API arm_init(
  225.     char*        appl_name,     /* application name              */
  226.     char*        appl_user_id,  /* Name of the application user  */
  227.     arm_int32_t  flags,         /* Reserved = 0                  */
  228.     char*        data,          /* Reserved = NULL               */
  229.     arm_int32_t  data_size);    /* Reserved = 0                  */
  230.  
  231.  
  232. extern arm_int32_t ARM_API arm_getid(
  233.     arm_int32_t  appl_id,       /* application handle            */
  234.     char*        tran_name,     /* transaction name              */
  235.     char*        tran_detail,   /* transaction additional info   */
  236.     arm_int32_t  flags,         /* Reserved = 0                  */
  237.     char*        data,          /* format definition of user metrics */
  238.     arm_int32_t  data_size);    /* length of data buffer         */
  239.  
  240.  
  241. extern arm_int32_t ARM_API arm_start(
  242.     arm_int32_t  tran_id,       /* transaction name identifier   */
  243.     arm_int32_t  flags,         /* Reserved = 0                  */
  244.     char*        data,          /* user metrics data             */
  245.     arm_int32_t  data_size);    /* length of data buffer         */
  246.  
  247.  
  248. extern arm_int32_t ARM_API arm_update(
  249.     arm_int32_t  start_handle,  /* unique transaction handle     */
  250.     arm_int32_t  flags,         /* Reserved = 0                  */
  251.     char*        data,          /* user metrics data             */
  252.     arm_int32_t  data_size);    /* length of data buffer         */
  253.  
  254.  
  255. extern arm_int32_t ARM_API arm_stop(
  256.     arm_int32_t  start_handle,  /* unique transaction handle     */
  257.     arm_int32_t  tran_status,   /* Good=0, Abort=1, Failed=2     */
  258.     arm_int32_t  flags,         /* Reserved = 0                  */
  259.     char*        data,          /* user metrics data             */
  260.     arm_int32_t  data_size);    /* length of data buffer         */
  261.  
  262.  
  263. extern arm_int32_t ARM_API arm_end(
  264.     arm_int32_t  appl_id,       /* application id                */
  265.     arm_int32_t  flags,            /* Reserved = 0                  */
  266.     char*        data,          /* Reserved = NULL               */
  267.     arm_int32_t  data_size);    /* Reserved = 0                  */
  268.  
  269.  
  270. #else  /* _PROTOTYPES */
  271.  
  272. extern arm_int32_t   ARM_API arm_init();
  273. extern arm_int32_t   ARM_API arm_getid();
  274. extern arm_int32_t   ARM_API arm_start();
  275. extern arm_int32_t   ARM_API arm_update();
  276. extern arm_int32_t   ARM_API arm_stop();
  277. extern arm_int32_t   ARM_API arm_end();
  278.  
  279. #endif /* _PROTOTYPES */
  280.  
  281. #ifdef __cplusplus
  282. }
  283. #endif /* __cplusplus */
  284.  
  285.  
  286. /*  Type definitions for compatibility with version 1.0 of the ARM API */
  287.  
  288. typedef arm_int32_t        arm_appl_id_t;
  289.  
  290. typedef arm_int32_t        arm_tran_id_t;
  291.  
  292. typedef arm_int32_t        arm_start_handle_t;
  293.  
  294. typedef arm_unsigned32_t   arm_flag_t;
  295.  
  296. typedef char               arm_data_t;
  297.  
  298. typedef arm_int32_t        arm_data_sz_t;
  299.  
  300. typedef char               arm_ptr_t;
  301.  
  302. typedef arm_int32_t        arm_ret_stat_t;
  303.  
  304. typedef arm_int32_t        arm_status_t;
  305.  
  306.  
  307. #endif /* ARM_H_INCLUDED */
  308.  
  309.  
  310.