• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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  */
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 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  */
49 struct 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  */
63 extern int opd_ext_initialize(char const * value);
64 
65 /**
66  * @param value: commandline input option string
67  *
68  * Deinitialize
69  */
70 extern int opd_ext_deinitialize();
71 
72 /**
73  * Print out extended feature statistics in oprofiled.log file
74  */
75 extern void opd_ext_print_stats();
76 
77 /**
78  * opd_sfile extended sfile handling functions
79  */
80 extern void opd_ext_sfile_create(struct sfile * sf);
81 extern void opd_ext_sfile_dup (struct sfile * to, struct sfile * from);
82 extern void opd_ext_sfile_close(struct sfile * sf);
83 extern void opd_ext_sfile_sync(struct sfile * sf);
84 extern 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  */
91 extern struct opd_event * opd_ext_find_counter_event(unsigned long counter);
92 
93 
94 #endif
95