/**
* @file opd_extended.h
* OProfile Extended Feature
*
* @remark Copyright 2007-2009 OProfile authors
* @remark Read the file COPYING
*
* @author Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
* Copyright (c) 2009 Advanced Micro Devices, Inc.
*/
#ifndef OPD_EXTENDED_H
#define OPD_EXTENDED_H
#include "opd_trans.h"
#include "odb.h"
#include <stdlib.h>
#include <stdint.h>
/**
* OProfile Extended Feature Table Entry
*/
struct opd_ext_feature {
// Feature name
const char* feature;
// Feature handlers
struct opd_ext_handlers * handlers;
};
/**
* OProfile Extended handlers
*/
struct opd_ext_handlers {
// Extended init
int (*ext_init)(char const *);
// Extended deinit
int (*ext_deinit)();
// Extended statistics
int (*ext_print_stats)();
// Extended sfile handlers
struct opd_ext_sfile_handlers * ext_sfile;
};
/**
* OProfile Extended sub-handlers (sfile)
*/
struct opd_ext_sfile_handlers {
int (*create)(struct sfile *);
int (*dup)(struct sfile *, struct sfile *);
int (*close)(struct sfile *);
int (*sync)(struct sfile *);
odb_t * (*get)(struct transient const *, int);
struct opd_event * (*find_counter_event)(unsigned long);
};
/**
* @param value: commandline input option string
*
* Parse the specified extended feature
*/
extern int opd_ext_initialize(char const * value);
/**
* @param value: commandline input option string
*
* Deinitialize
*/
extern int opd_ext_deinitialize();
/**
* Print out extended feature statistics in oprofiled.log file
*/
extern void opd_ext_print_stats();
/**
* opd_sfile extended sfile handling functions
*/
extern void opd_ext_sfile_create(struct sfile * sf);
extern void opd_ext_sfile_dup (struct sfile * to, struct sfile * from);
extern void opd_ext_sfile_close(struct sfile * sf);
extern void opd_ext_sfile_sync(struct sfile * sf);
extern odb_t * opd_ext_sfile_get(struct transient const * trans, int is_cg);
/**
* @param counter: counter index
*
* Get event struct opd_event from the counter index value.
*/
extern struct opd_event * opd_ext_find_counter_event(unsigned long counter);
#endif