00001 #ifndef __AOP_TRACECUT_H__
00002 #define __AOP_TRACECUT_H__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00043 struct aop_joinpoint;
00044 struct aop_type;
00045 struct tc_tracecut;
00046
00050 #define TC_MAX_ID_SIZE 255
00051
00055 enum tc_error {
00059 TC_SUCCESS,
00060
00065 TC_BAD_CONTEXT,
00066
00070 TC_INVAL,
00071
00075 TC_DUPLICATE,
00076
00083 TC_BAD_ID,
00084
00089 TC_BAD_RETURN_BINDING,
00090
00094 TC_NOENT,
00095
00099 TC_NOMEM,
00100 };
00101
00102 extern enum tc_error tc_error_code (struct tc_tracecut *tc);
00103 extern void tc_reset_error (struct tc_tracecut *tc);
00104
00105 extern enum tc_error tc_add_param (struct tc_tracecut *tc, const char *name,
00106 const struct aop_type *type);
00107
00108 extern enum tc_error tc_add_call_symbol (struct tc_tracecut *tc,
00109 const char *name,
00110 const char *func_name,
00111 enum aop_insert_location location);
00112
00113 extern enum tc_error tc_bind_to_call_param (struct tc_tracecut *tc,
00114 const char *param_name,
00115 const char *symbol_name,
00116 int call_param_index);
00117 extern enum tc_error tc_bind_to_return_value (struct tc_tracecut *tc,
00118 const char *param_name,
00119 const char *symbol_name);
00120
00121 enum tc_error tc_declare_call_symbol (struct tc_tracecut *tc, const char *name,
00122 const char *declaration,
00123 enum aop_insert_location location);
00124
00125 extern enum tc_error tc_add_rule (struct tc_tracecut *tc,
00126 const char *specification);
00127
00128 extern struct tc_tracecut *tc_create_tracecut (void);
00129 extern void tc_free_tracecut (struct tc_tracecut *tc);
00130
00131 extern void tc_insert_tracecut_init_advice (struct aop_joinpoint *jp);
00132
00133 extern void tc_set_main_function (const char *func_name);
00134 extern void tc_register_tracecut_pass (void);
00135
00136 #endif