endif -> #endif
[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 /* We sometimes include this into assembly files, so guard the struct defs. */
12 #if !defined(__ASSEMBLER__)
13
14 /* If we must make up a boolean type, we should make it unique */
15 #define RT_Boolean unsigned char
16 #define RT_TRUE 1
17 #define RT_FALSE 0
18
19 typedef void (*instFunc)(void *cdata, int type, char *eventData);
20
21 typedef struct intCounterRec intCounter;
22
23 /* parameters to a instremented function */
24 typedef struct _parameteters parameters;
25 typedef enum { processTime, wallTime } timerType;
26
27 /* 64 bit time values */
28 typedef long long int time64;
29 typedef long long int int64;
30
31 struct sampleIdRec {
32     unsigned int aggregate:1;
33     unsigned int id:31;
34 };
35
36 struct endStatsRec {
37     int alarms;
38     int numReported;
39     float instCycles;
40     float instTime;
41     float handlerCost;
42     float totalCpuTime;
43     int samplesReported;
44     float samplingRate;
45     float totalWallTime;
46     int userTicks;
47     int instTicks;
48 };
49
50 typedef struct sampleIdRec sampleId;
51
52
53 struct intCounterRec {
54     int value;          /* this field must be first for setValue to work -jkh */
55     sampleId id;
56 };
57
58
59 typedef struct floatCounterRec floatCounter;
60 struct floatCounterRec {
61     float value;
62     sampleId id;
63 };
64
65
66 typedef struct tTimerRec tTimer;
67 struct tTimerRec {
68     int         counter;                /* must be 0 to start/stop */
69     time64      total;
70     time64      start;
71     time64      lastValue;
72     time64      snapShot;       /* used to get consistant value during st/stp */
73     int         normalize;      /* value to divide total by to get seconds */
74     timerType   type;
75     sampleId    id;
76     volatile char mutex;
77     volatile char sampled;
78 };
79
80 typedef int (*filterFunc)(void *cdata, parameters *params);
81 typedef int traceStream;
82
83 #endif
84
85 /*
86  * Define the size of the per process data area.
87  *
88  *  This should be a power of two to reduce paging and chacing shifts.
89  */
90 #if defined(hppa1_1_hp_hpux)
91 #define SYN_INST_BUF_SIZE       1024*32 // cannot support larger jumps
92 #else
93 #define SYN_INST_BUF_SIZE       1024*1024
94 #endif
95
96 #endif