tclDTrace.d
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:6k
源码类别:

通讯编程

开发平台:

Visual C++

  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.1.2.2 2007/09/13 15:28:12 das Exp $
  12.  */
  13. typedef struct Tcl_Obj Tcl_Obj;
  14. /*
  15.  * Tcl DTrace probes
  16.  */
  17. provider tcl {
  18.     /***************************** proc probes *****************************/
  19.     /*
  20.      * tcl*:::proc-entry probe
  21.      *     triggered immediately before proc bytecode execution
  22.      * arg0: proc name (string)
  23.      * arg1: number of arguments (int)
  24.      * arg2: array of proc argument objects (Tcl_Obj**)
  25.      */
  26.     probe proc__entry(char* name, int objc, Tcl_Obj **objv);
  27.     /*
  28.      * tcl*:::proc-return probe
  29.      *     triggered immediately after proc bytecode execution
  30.      * arg0: proc name (string)
  31.      * arg1: return code (int)
  32.      */
  33.     probe proc__return(char* name, int code);
  34.     /*
  35.      * tcl*:::proc-result probe
  36.      *     triggered after proc-return probe and result processing
  37.      * arg0: proc name (string)
  38.      * arg1: return code (int)
  39.      * arg2: proc result (string)
  40.      * arg3: proc result object (Tcl_Obj*)
  41.      */
  42.     probe proc__result(char* name, int code, char* result, Tcl_Obj *resultobj);
  43.     /*
  44.      * tcl*:::proc-args probe
  45.      *     triggered before proc-entry probe, gives access to string
  46.      *     representation of proc arguments
  47.      * arg0: proc name (string)
  48.      * arg1-arg9: proc arguments or NULL (strings)
  49.      */
  50.     probe proc__args(char* name, char* arg1, char* arg2, char* arg3,
  51.     char* arg4, char* arg5, char* arg6, char* arg7, char* arg8,
  52.     char* arg9);
  53.     /***************************** cmd probes ******************************/
  54.     /*
  55.      * tcl*:::cmd-entry probe
  56.      *     triggered immediately before commmand execution
  57.      * arg0: command name (string)
  58.      * arg1: number of arguments (int)
  59.      * arg2: array of command argument objects (Tcl_Obj**)
  60.      */
  61.     probe cmd__entry(char* name, int objc, Tcl_Obj **objv);
  62.     /*
  63.      * tcl*:::cmd-return probe
  64.      *     triggered immediately after commmand execution
  65.      * arg0: command name (string)
  66.      * arg1: return code (int)
  67.      */
  68.     probe cmd__return(char* name, int code);
  69.     /*
  70.      * tcl*:::cmd-result probe
  71.      *     triggered after cmd-return probe and result processing
  72.      * arg0: command name (string)
  73.      * arg1: return code (int)
  74.      * arg2: command result (string)
  75.      * arg3: command result object (Tcl_Obj*)
  76.      */
  77.     probe cmd__result(char* name, int code, char* result, Tcl_Obj *resultobj);
  78.     /*
  79.      * tcl*:::cmd-args probe
  80.      *     triggered before cmd-entry probe, gives access to string
  81.      *     representation of command arguments
  82.      * arg0: command name (string)
  83.      * arg1-arg9: command arguments or NULL (strings)
  84.      */
  85.     probe cmd__args(char* name, char* arg1, char* arg2, char* arg3,
  86.     char* arg4, char* arg5, char* arg6, char* arg7, char* arg8,
  87.     char* arg9);
  88.     /***************************** inst probes *****************************/
  89.     /*
  90.      * tcl*:::inst-start probe
  91.      *     triggered immediately before execution of a bytecode
  92.      * arg0: bytecode name (string)
  93.      * arg1: depth of stack (int)
  94.      * arg2: top of stack (Tcl_Obj**)
  95.      */
  96.     probe inst__start(char* name, int depth, Tcl_Obj **stack);
  97.     /*
  98.      * tcl*:::inst-done probe
  99.      *     triggered immediately after execution of a bytecode
  100.      * arg0: bytecode name (string)
  101.      * arg1: depth of stack (int)
  102.      * arg2: top of stack (Tcl_Obj**)
  103.      */
  104.     probe inst__done(char* name, int depth, Tcl_Obj **stack);
  105.     /***************************** obj probes ******************************/
  106.     /*
  107.      * tcl*:::obj-create probe
  108.      *     triggered immediately after a new Tcl_Obj has been created
  109.      * arg0: object created (Tcl_Obj*)
  110.      */
  111.     probe obj__create(Tcl_Obj* obj);
  112.     /*
  113.      * tcl*:::obj-free probe
  114.      *     triggered immediately before a Tcl_Obj is freed
  115.      * arg0: object to be freed (Tcl_Obj*)
  116.      */
  117.     probe obj__free(Tcl_Obj* obj);
  118.     /***************************** tcl probes ******************************/
  119.     /*
  120.      * tcl*:::tcl-probe probe
  121.      *     triggered when the ::tcl::dtrace command is called
  122.      * arg0-arg9: command arguments (strings)
  123.      */
  124.     probe tcl__probe(char* arg0, char* arg1, char* arg2, char* arg3,
  125.     char* arg4, char* arg5, char* arg6, char* arg7, char* arg8,
  126.     char* arg9);
  127. };
  128. /*
  129.  * Tcl types and constants for use in DTrace scripts
  130.  */
  131. typedef struct Tcl_ObjType {
  132.     char *name;
  133.     void *freeIntRepProc;
  134.     void *dupIntRepProc;
  135.     void *updateStringProc;
  136.     void *setFromAnyProc;
  137. } Tcl_ObjType;
  138. struct Tcl_Obj {
  139.     int refCount;
  140.     char *bytes;
  141.     int length;
  142.     Tcl_ObjType *typePtr;
  143.     union {
  144. long longValue;
  145. double doubleValue;
  146. void *otherValuePtr;
  147. int64_t wideValue;
  148. struct {
  149.     void *ptr1;
  150.     void *ptr2;
  151. } twoPtrValue;
  152.     } internalRep;
  153. };
  154. enum return_codes {
  155.     TCL_OK = 0,
  156.     TCL_ERROR,
  157.     TCL_RETURN,
  158.     TCL_BREAK,
  159.     TCL_CONTINUE
  160. };
  161. #pragma D attributes Evolving/Evolving/Common provider tcl provider
  162. #pragma D attributes Private/Private/Common provider tcl module
  163. #pragma D attributes Private/Private/Common provider tcl function
  164. #pragma D attributes Evolving/Evolving/Common provider tcl name
  165. #pragma D attributes Evolving/Evolving/Common provider tcl args
  166. /*
  167.  * Local Variables:
  168.  * mode: c
  169.  * c-basic-offset: 4
  170.  * fill-column: 78
  171.  * End:
  172.  */