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