1 /** 2 * @file opd_extended.h 3 * OProfile Extended Feature 4 * 5 * @remark Copyright 2007-2009 OProfile authors 6 * @remark Read the file COPYING 7 * 8 * @author Suravee Suthikulpanit <suravee.suthikulpanit (at) amd.com> 9 * Copyright (c) 2009 Advanced Micro Devices, Inc. 10 */ 11 12 #ifndef OPD_EXTENDED_H 13 #define OPD_EXTENDED_H 14 15 #include "opd_trans.h" 16 #include "odb.h" 17 18 #include <stdlib.h> 19 #include <stdint.h> 20 21 22 /** 23 * OProfile Extended Feature Table Entry 24 */ 25 struct opd_ext_feature { 26 // Feature name 27 const char* feature; 28 // Feature handlers 29 struct opd_ext_handlers * handlers; 30 }; 31 32 /** 33 * OProfile Extended handlers 34 */ 35 struct opd_ext_handlers { 36 // Extended init 37 int (*ext_init)(char const *); 38 // Extended statistics 39 int (*ext_print_stats)(); 40 // Extended sfile handlers 41 struct opd_ext_sfile_handlers * ext_sfile; 42 }; 43 44 /** 45 * OProfile Extended sub-handlers (sfile) 46 */ 47 struct opd_ext_sfile_handlers { 48 int (*create)(struct sfile *); 49 int (*dup)(struct sfile *, struct sfile *); 50 int (*close)(struct sfile *); 51 int (*sync)(struct sfile *); 52 odb_t * (*get)(struct transient const *, int); 53 struct opd_event * (*find_counter_event)(unsigned long); 54 }; 55 56 /** 57 * @param value: commandline input option string 58 * 59 * Parse the specified extended feature 60 */ 61 extern int opd_ext_initialize(char const * value); 62 63 /** 64 * Print out extended feature statistics in oprofiled.log file 65 */ 66 extern void opd_ext_print_stats(); 67 68 /** 69 * opd_sfile extended sfile handling functions 70 */ 71 extern void opd_ext_sfile_create(struct sfile * sf); 72 extern void opd_ext_sfile_dup (struct sfile * to, struct sfile * from); 73 extern void opd_ext_sfile_close(struct sfile * sf); 74 extern void opd_ext_sfile_sync(struct sfile * sf); 75 extern odb_t * opd_ext_sfile_get(struct transient const * trans, int is_cg); 76 77 /** 78 * @param counter: counter index 79 * 80 * Get event struct opd_event from the counter index value. 81 */ 82 extern struct opd_event * opd_ext_find_counter_event(unsigned long counter); 83 84 85 #endif 86