summaryrefslogtreecommitdiff
path: root/defs/dtrace.d
blob: 2983423d0ba828e8d1b921d3fd793c33ce5f5aa3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#ifdef BITSIZE_OF_VALUE
#define DO_DEFINE_VALUE(sz) typedef uint ## sz ## _t VALUE
#define DEFINE_VALUE(sz) DO_DEFINE_VALUE(sz)
DEFINE_VALUE(BITSIZE_OF_VALUE);
#else
# error BITSIZE_OF_VALUE is not defined.
#endif
provider ruby {
    probe method__entry(VALUE receiver, char *classname, char *methodname, char *sourcefile, int sourceline);
    probe method__return(VALUE receiver, char *classname, char *methodname, char *sourcefile, int sourceline);
    probe raise(VALUE exception, char *classname, char *sourcefile, int sourceline);
    probe rescue(VALUE exception, char *classname, char *sourcefile, int sourceline);
    probe line(char* sourcefile, int sourceline);

    /* gc probes */
    probe gc__begin();
    probe gc__end();

    /* threads and fibers */
    probe thread__init(VALUE thread, char *sourcefile, int sourceline);
    probe thread__term(VALUE thread, char *sourcefile, int sourceline);
    probe thread__enter(VALUE thread, char *sourcefile, int sourceline);
    probe thread__leave(VALUE thread, char *sourcefile, int sourceline);

    /* Some initial memory type probes */
    probe object__create(VALUE obj, char *classname, char *sourcefile, int sourceline);
    probe object__free(VALUE obj);

    /* VM proves */
    probe insn__entry(char *insnname, VALUE *operands, char *sourcefile, int sourceline);
    probe insn__return(char *insnname, VALUE *operands, char *sourcefile, int sourceline);

    probe ruby__probe(char *name, char *data);
};

#pragma D attributes Evolving/Evolving/Common provider ruby provider 
#pragma D attributes Private/Private/Unknown provider ruby module 
#pragma D attributes Private/Private/Unknown provider ruby function 
#pragma D attributes Evolving/Evolving/Unknown provider ruby name 
#pragma D attributes Evolving/Evolving/Unknown provider ruby args