blob: 715041dfcce03885b68b8fef6d2416375b675657 [file] [log] [blame]
Jean-Baptiste Queru84862f92009-11-12 18:45:34 -08001/**
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 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 */
47struct 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 */
61extern int opd_ext_initialize(char const * value);
62
63/**
64 * Print out extended feature statistics in oprofiled.log file
65 */
66extern void opd_ext_print_stats();
67
68/**
69 * opd_sfile extended sfile handling functions
70 */
71extern void opd_ext_sfile_create(struct sfile * sf);
72extern void opd_ext_sfile_dup (struct sfile * to, struct sfile * from);
73extern void opd_ext_sfile_close(struct sfile * sf);
74extern void opd_ext_sfile_sync(struct sfile * sf);
75extern 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 */
82extern struct opd_event * opd_ext_find_counter_event(unsigned long counter);
83
84
85#endif