Home | History | Annotate | Download | only in daemon
      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 (at) 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 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  */
     47 struct 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  */
     61 extern int opd_ext_initialize(char const * value);
     62 
     63 /**
     64  * Print out extended feature statistics in oprofiled.log file
     65  */
     66 extern void opd_ext_print_stats();
     67 
     68 /**
     69  * opd_sfile extended sfile handling functions
     70  */
     71 extern void opd_ext_sfile_create(struct sfile * sf);
     72 extern void opd_ext_sfile_dup (struct sfile * to, struct sfile * from);
     73 extern void opd_ext_sfile_close(struct sfile * sf);
     74 extern void opd_ext_sfile_sync(struct sfile * sf);
     75 extern 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  */
     82 extern struct opd_event * opd_ext_find_counter_event(unsigned long counter);
     83 
     84 
     85 #endif
     86