Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/tcl8.5.2/generic/tclDTrace.d @ 63

Last change on this file since 63 was 25, checked in by landauf, 16 years ago

added tcl to libs

File size: 6.5 KB
Line 
1/*
2 * tclDTrace.d --
3 *
4 *      Tcl DTrace provider.
5 *
6 * Copyright (c) 2007 Daniel A. Steffen <das@users.sourceforge.net>
7 *
8 * See the file "license.terms" for information on usage and redistribution of
9 * this file, and for a DISCLAIMER OF ALL WARRANTIES.
10 *
11 * RCS: @(#) $Id: tclDTrace.d,v 1.2 2007/12/13 15:23:16 dgp Exp $
12 */
13
14typedef struct Tcl_Obj Tcl_Obj;
15
16/*
17 * Tcl DTrace probes
18 */
19
20provider tcl {
21    /***************************** proc probes *****************************/
22    /*
23     *  tcl*:::proc-entry probe
24     *      triggered immediately before proc bytecode execution
25     *          arg0: proc name                         (string)
26     *          arg1: number of arguments               (int)
27     *          arg2: array of proc argument objects    (Tcl_Obj**)
28     */
29    probe proc__entry(char* name, int objc, Tcl_Obj **objv);
30    /*
31     *  tcl*:::proc-return probe
32     *      triggered immediately after proc bytecode execution
33     *          arg0: proc name                         (string)
34     *          arg1: return code                       (int)
35     */
36    probe proc__return(char* name, int code);
37    /*
38     *  tcl*:::proc-result probe
39     *      triggered after proc-return probe and result processing
40     *          arg0: proc name                         (string)
41     *          arg1: return code                       (int)
42     *          arg2: proc result                       (string)
43     *          arg3: proc result object                (Tcl_Obj*)
44     */
45    probe proc__result(char* name, int code, char* result, Tcl_Obj *resultobj);
46    /*
47     *  tcl*:::proc-args probe
48     *      triggered before proc-entry probe, gives access to string
49     *      representation of proc arguments
50     *          arg0: proc name                         (string)
51     *          arg1-arg9: proc arguments or NULL       (strings)
52     */
53    probe proc__args(char* name, char* arg1, char* arg2, char* arg3,
54            char* arg4, char* arg5, char* arg6, char* arg7, char* arg8,
55            char* arg9);
56    /*
57     *  tcl*:::proc-info probe
58     *      triggered before proc-entry probe, gives access to TIP 280
59     *      information for the proc invocation (i.e. [info frame 0])
60     *          arg0: TIP 280 cmd                       (string)
61     *          arg1: TIP 280 type                      (string)
62     *          arg2: TIP 280 proc                      (string)
63     *          arg3: TIP 280 file                      (string)
64     *          arg4: TIP 280 line                      (int)
65     *          arg5: TIP 280 level                     (int)
66     */
67    probe proc__info(char* cmd, char* type, char* proc, char* file, int line,
68            int level);
69
70    /***************************** cmd probes ******************************/
71    /*
72     *  tcl*:::cmd-entry probe
73     *      triggered immediately before commmand execution
74     *          arg0: command name                      (string)
75     *          arg1: number of arguments               (int)
76     *          arg2: array of command argument objects (Tcl_Obj**)
77     */
78    probe cmd__entry(char* name, int objc, Tcl_Obj **objv);
79    /*
80     *  tcl*:::cmd-return probe
81     *      triggered immediately after commmand execution
82     *          arg0: command name                      (string)
83     *          arg1: return code                       (int)
84     */
85    probe cmd__return(char* name, int code);
86    /*
87     *  tcl*:::cmd-result probe
88     *      triggered after cmd-return probe and result processing
89     *          arg0: command name                      (string)
90     *          arg1: return code                       (int)
91     *          arg2: command result                    (string)
92     *          arg3: command result object             (Tcl_Obj*)
93     */
94    probe cmd__result(char* name, int code, char* result, Tcl_Obj *resultobj);
95    /*
96     *  tcl*:::cmd-args probe
97     *      triggered before cmd-entry probe, gives access to string
98     *      representation of command arguments
99     *          arg0: command name                      (string)
100     *          arg1-arg9: command arguments or NULL    (strings)
101     */
102    probe cmd__args(char* name, char* arg1, char* arg2, char* arg3,
103            char* arg4, char* arg5, char* arg6, char* arg7, char* arg8,
104            char* arg9);
105    /*
106     *  tcl*:::cmd-info probe
107     *      triggered before cmd-entry probe, gives access to TIP 280
108     *      information for the command invocation (i.e. [info frame 0])
109     *          arg0: TIP 280 cmd                       (string)
110     *          arg1: TIP 280 type                      (string)
111     *          arg2: TIP 280 proc                      (string)
112     *          arg3: TIP 280 file                      (string)
113     *          arg4: TIP 280 line                      (int)
114     *          arg5: TIP 280 level                     (int)
115     */
116    probe cmd__info(char* cmd, char* type, char* proc, char* file, int line,
117            int level);
118
119    /***************************** inst probes *****************************/
120    /*
121     *  tcl*:::inst-start probe
122     *      triggered immediately before execution of a bytecode
123     *          arg0: bytecode name                     (string)
124     *          arg1: depth of stack                    (int)
125     *          arg2: top of stack                      (Tcl_Obj**)
126     */
127    probe inst__start(char* name, int depth, Tcl_Obj **stack);
128    /*
129     *  tcl*:::inst-done probe
130     *      triggered immediately after execution of a bytecode
131     *          arg0: bytecode name                     (string)
132     *          arg1: depth of stack                    (int)
133     *          arg2: top of stack                      (Tcl_Obj**)
134     */
135    probe inst__done(char* name, int depth, Tcl_Obj **stack);
136
137    /***************************** obj probes ******************************/
138    /*
139     *  tcl*:::obj-create probe
140     *      triggered immediately after a new Tcl_Obj has been created
141     *          arg0: object created                    (Tcl_Obj*)
142     */
143    probe obj__create(Tcl_Obj* obj);
144    /*
145     *  tcl*:::obj-free probe
146     *      triggered immediately before a Tcl_Obj is freed
147     *          arg0: object to be freed                (Tcl_Obj*)
148     */
149    probe obj__free(Tcl_Obj* obj);
150
151    /***************************** tcl probes ******************************/
152    /*
153     *  tcl*:::tcl-probe probe
154     *      triggered when the ::tcl::dtrace command is called
155     *          arg0-arg9: command arguments            (strings)
156     */
157    probe tcl__probe(char* arg0, char* arg1, char* arg2, char* arg3,
158            char* arg4, char* arg5, char* arg6, char* arg7, char* arg8,
159            char* arg9);
160};
161
162/*
163 * Tcl types and constants for use in DTrace scripts
164 */
165
166typedef struct Tcl_ObjType {
167    char *name;
168    void *freeIntRepProc;
169    void *dupIntRepProc;
170    void *updateStringProc;
171    void *setFromAnyProc;
172} Tcl_ObjType;
173
174struct Tcl_Obj {
175    int refCount;
176    char *bytes;
177    int length;
178    Tcl_ObjType *typePtr;
179    union {
180        long longValue;
181        double doubleValue;
182        void *otherValuePtr;
183        int64_t wideValue;
184        struct {
185            void *ptr1;
186            void *ptr2;
187        } twoPtrValue;
188        struct {
189            void *ptr;
190            unsigned long value;
191        } ptrAndLongRep;
192    } internalRep;
193};
194
195enum return_codes {
196    TCL_OK = 0,
197    TCL_ERROR,
198    TCL_RETURN,
199    TCL_BREAK,
200    TCL_CONTINUE
201};
202
203#pragma D attributes Evolving/Evolving/Common provider tcl provider
204#pragma D attributes Private/Private/Common provider tcl module
205#pragma D attributes Private/Private/Common provider tcl function
206#pragma D attributes Evolving/Evolving/Common provider tcl name
207#pragma D attributes Evolving/Evolving/Common provider tcl args
208
209/*
210 * Local Variables:
211 * mode: c
212 * c-basic-offset: 4
213 * fill-column: 78
214 * End:
215 */
Note: See TracBrowser for help on using the repository browser.