blob: d7682a4e70bdc770e0b942f7cf93c44da63dcb0b [file] [log] [blame]
Ben Cheng5a4eb4e2009-09-14 16:00:41 -07001/**
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 *);
Jeff Brown7a33c862011-02-02 14:00:44 -080038 // Extended deinit
39 int (*ext_deinit)();
Ben Cheng5a4eb4e2009-09-14 16:00:41 -070040 // 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/**
Jeff Brown7a33c862011-02-02 14:00:44 -080066 * @param value: commandline input option string
67 *
68 * Deinitialize
69 */
70extern int opd_ext_deinitialize();
71
72/**
Ben Cheng5a4eb4e2009-09-14 16:00:41 -070073 * 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