Added types for observed cost model
[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 typedef void (*instFunc)(void *cdata, int type, char *eventData);
12
13 typedef struct intCounterRec intCounter;
14
15 /* parameters to a instremented function */
16 typedef struct _parameteters parameters;
17 typedef enum { processTime, wallTime } timerType;
18
19 /* 64 bit time values */
20 typedef long long int time64;
21 typedef long long int int64;
22
23 struct sampleIdRec {
24     unsigned int aggregate:1;
25     unsigned int id:31;
26 };
27
28 typedef struct sampleIdRec sampleId;
29
30
31 struct intCounterRec {
32     int value;          /* this field must be first for setValue to work -jkh */
33     sampleId id;
34 };
35
36
37 typedef struct floatCounterRec floatCounter;
38 struct floatCounterRec {
39     float value;
40     sampleId id;
41 };
42
43
44 typedef struct tTimerRec tTimer;
45 struct tTimerRec {
46     int         counter;                /* must be 0 to start/stop */
47     time64      total;
48     time64      start;
49     time64      snapShot;       /* used to get consistant value during st/stp */
50     int         normalize;      /* value to divide total by to get seconds */
51     timerType   type;
52     sampleId    id;
53     volatile char mutex;
54     volatile char sampled;
55 };
56
57 typedef (*filterFunc)(void *cdata, parameters *params);
58
59 /*
60  * standard inst. functions.
61  *
62  */
63
64 /*
65  * return the current CPU time in usec.
66  */
67 time64 DYNINSTgetCPUtime();
68
69 /*
70  * start a timer.
71  */
72 void DYNINSTstartTimer(tTimer *timer);
73
74 void DYNINSTstopTimer(tTimer *timer);
75
76 typedef traceStream;
77 /*
78  * timestamp and write the passed trace type, and event data to the passed
79  *   trace stream.
80  *
81  */
82 void DYNINSTgenerateTraceRecord(traceStream destination, 
83                                 short type, 
84                                 short length, 
85                                 void *eventData);
86
87 /*
88  * Define the size of the per process data area.
89  *
90  *  This should be a power of two to reduce paging and chacing shifts.
91  */
92 #define SYN_INST_BUF_SIZE       1024*512
93
94 #endif