00001 00012 #ifndef OPD_EXTENDED_H 00013 #define OPD_EXTENDED_H 00014 00015 #include "opd_trans.h" 00016 #include "odb.h" 00017 00018 #include <stdlib.h> 00019 #include <stdint.h> 00020 00021 00025 struct opd_ext_feature { 00026 // Feature name 00027 const char* feature; 00028 // Feature handlers 00029 struct opd_ext_handlers * handlers; 00030 }; 00031 00035 struct opd_ext_handlers { 00036 // Extended init 00037 int (*ext_init)(char const *); 00038 // Extended deinit 00039 int (*ext_deinit)(); 00040 // Extended statistics 00041 int (*ext_print_stats)(); 00042 // Extended sfile handlers 00043 struct opd_ext_sfile_handlers * ext_sfile; 00044 }; 00045 00049 struct opd_ext_sfile_handlers { 00050 int (*create)(struct sfile *); 00051 int (*dup)(struct sfile *, struct sfile *); 00052 int (*close)(struct sfile *); 00053 int (*sync)(struct sfile *); 00054 odb_t * (*get)(struct transient const *, int); 00055 struct opd_event * (*find_counter_event)(unsigned long); 00056 }; 00057 00063 extern int opd_ext_initialize(char const * value); 00064 00070 extern int opd_ext_deinitialize(); 00071 00075 extern void opd_ext_print_stats(); 00076 00080 extern void opd_ext_sfile_create(struct sfile * sf); 00081 extern void opd_ext_sfile_dup (struct sfile * to, struct sfile * from); 00082 extern void opd_ext_sfile_close(struct sfile * sf); 00083 extern void opd_ext_sfile_sync(struct sfile * sf); 00084 extern odb_t * opd_ext_sfile_get(struct transient const * trans, int is_cg); 00085 00091 extern struct opd_event * opd_ext_find_counter_event(unsigned long counter); 00092 00093 00094 #endif