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@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 */ 25struct 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 */ 35struct opd_ext_handlers { 36 // Extended init 37 int (*ext_init)(char const *); 38 // Extended deinit 39 int (*ext_deinit)(); 40 // Extended statistics 41 int (*ext_print_stats)(); 42 // Extended sfile handlers 43 struct opd_ext_sfile_handlers * ext_sfile; 44}; 45 46/** 47 * OProfile Extended sub-handlers (sfile) 48 */ 49struct opd_ext_sfile_handlers { 50 int (*create)(struct sfile *); 51 int (*dup)(struct sfile *, struct sfile *); 52 int (*close)(struct sfile *); 53 int (*sync)(struct sfile *); 54 odb_t * (*get)(struct transient const *, int); 55 struct opd_event * (*find_counter_event)(unsigned long); 56}; 57 58/** 59 * @param value: commandline input option string 60 * 61 * Parse the specified extended feature 62 */ 63extern int opd_ext_initialize(char const * value); 64 65/** 66 * @param value: commandline input option string 67 * 68 * Deinitialize 69 */ 70extern int opd_ext_deinitialize(); 71 72/** 73 * Print out extended feature statistics in oprofiled.log file 74 */ 75extern void opd_ext_print_stats(); 76 77/** 78 * opd_sfile extended sfile handling functions 79 */ 80extern void opd_ext_sfile_create(struct sfile * sf); 81extern void opd_ext_sfile_dup (struct sfile * to, struct sfile * from); 82extern void opd_ext_sfile_close(struct sfile * sf); 83extern void opd_ext_sfile_sync(struct sfile * sf); 84extern odb_t * opd_ext_sfile_get(struct transient const * trans, int is_cg); 85 86/** 87 * @param counter: counter index 88 * 89 * Get event struct opd_event from the counter index value. 90 */ 91extern struct opd_event * opd_ext_find_counter_event(unsigned long counter); 92 93 94#endif 95