Added COLLECTOR for HPUX; added support for INSTANTIATE_TEMPLATES
[dyninst.git] / rtinst / h / rtinst.h
1
2 /*
3  * This file contains the standard insrumentation functions that are provied
4  *   by the instrumentation layer.
5  *
6  */
7
8 #ifndef _RTINST_H
9 #define _RTINST_H
10
11 /* If we must make up a boolean type, we should make it unique */
12 #define RT_Boolean unsigned char
13 #define RT_TRUE 1
14 #define RT_FALSE 0
15
16 typedef void (*instFunc)(void *cdata, int type, char *eventData);
17
18 typedef struct intCounterRec intCounter;
19
20 /* parameters to a instremented function */
21 typedef struct _parameteters parameters;
22 typedef enum { processTime, wallTime } timerType;
23
24 /* 64 bit time values */
25 typedef long long int time64;
26 typedef long long int int64;
27
28 struct sampleIdRec {
29     unsigned int aggregate:1;
30     unsigned int id:31;
31 };
32
33 struct endStatsRec {
34     int alarms;
35     int numReported;
36     float instCycles;
37     float instTime;
38     float handlerCost;
39     float totalCpuTime;
40     int samplesReported;
41     float samplingRate;
42     float totalWallTime;
43     int userTicks;
44     int instTicks;
45 };
46
47 typedef struct sampleIdRec sampleId;
48
49
50 struct intCounterRec {
51     int value;          /* this field must be first for setValue to work -jkh */
52     sampleId id;
53 };
54
55
56 typedef struct floatCounterRec floatCounter;
57 struct floatCounterRec {
58     float value;
59     sampleId id;
60 };
61
62
63 typedef struct tTimerRec tTimer;
64 struct tTimerRec {
65     int         counter;                /* must be 0 to start/stop */
66     time64      total;
67     time64      start;
68     time64      lastValue;
69     time64      snapShot;       /* used to get consistant value during st/stp */
70     int         normalize;      /* value to divide total by to get seconds */
71     timerType   type;
72     sampleId    id;
73     volatile char mutex;
74     volatile char sampled;
75 };
76
77 typedef int (*filterFunc)(void *cdata, parameters *params);
78 typedef int traceStream;
79
80 /*
81  * Define the size of the per process data area.
82  *
83  *  This should be a power of two to reduce paging and chacing shifts.
84  */
85 #define SYN_INST_BUF_SIZE       1024*1024
86
87 #endif