(root)/
binutils-2.41/
gprofng/
src/
Dbe.h
       1  /* Copyright (C) 2021-2023 Free Software Foundation, Inc.
       2     Contributed by Oracle.
       3  
       4     This file is part of GNU Binutils.
       5  
       6     This program is free software; you can redistribute it and/or modify
       7     it under the terms of the GNU General Public License as published by
       8     the Free Software Foundation; either version 3, or (at your option)
       9     any later version.
      10  
      11     This program is distributed in the hope that it will be useful,
      12     but WITHOUT ANY WARRANTY; without even the implied warranty of
      13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14     GNU General Public License for more details.
      15  
      16     You should have received a copy of the GNU General Public License
      17     along with this program; if not, write to the Free Software
      18     Foundation, 51 Franklin Street - Fifth Floor, Boston,
      19     MA 02110-1301, USA.  */
      20  
      21  #ifndef _DBE_H_
      22  #define _DBE_H_
      23  
      24  #include <stdio.h>
      25  #include "enums.h"
      26  
      27  class MetricList;
      28  template <class ITEM> class Vector;
      29  typedef long long Obj;
      30  
      31  Vector<char*> *dbeGetInitMessages (void);
      32  Vector<char*> *dbeGetExpPreview (int dbevindex, char *exp_name);
      33  char *dbeGetExpParams (int dbevindex, char *exp_name);
      34  char *dbeCreateDirectories (const char *dirname);
      35  char *dbeDeleteFile (const char *pathname);
      36  Vector<char*> *dbeReadFile (const char *pathname);
      37  int dbeWriteFile (const char *pathname, const char *contents);
      38  char *dbeGetFileAttributes (const char *filename, const char *format);
      39  char *dbeGetFiles (const char *dirname, const char *format);
      40  char *dbeGetRunningProcesses (const char *format);
      41  char *dbeOpenExperimentList (int dbevindex, Vector<Vector<char*>*> *groups,
      42  			     bool sessionRestart);
      43  char *dbeReadRCFile (int dbevindex, char* path);
      44  char *dbeSetExperimentsGroups (Vector<Vector<char*>*> *groups);
      45  Vector<Vector<char*>*> *dbeGetExperimensGroups ();
      46  char *dbeDropExperiment (int dbevindex, Vector<int> *drop_index);
      47  Vector<char*> *dbeGetExpsProperty (const char *prop_name);
      48  Vector<char*> *dbeGetExpName (int dbevindex);
      49  Vector<int> *dbeGetExpState (int dbevindex);
      50  Vector<bool> *dbeGetExpEnable (int dbevindex);
      51  bool dbeSetExpEnable (int dbevindex, Vector<bool> *enable);
      52  Vector<char*> *dbeGetExpInfo (int dbevindex);
      53  bool dbeGetViewModeEnable ();
      54  bool dbeGetJavaEnable ();
      55  int dbeUpdateNotes (int dbevindex, int exp_id, int type, char* text,
      56  		    bool handle_file);
      57  Vector<void*> *dbeGetTabListInfo (int dbevindex);
      58  Vector<bool> *dbeGetTabSelectionState (int dbevindex);
      59  void dbeSetTabSelectionState (int dbevindex, Vector<bool> *selected);
      60  Vector<bool> *dbeGetMemTabSelectionState (int dbevindex);
      61  void dbeSetMemTabSelectionState (int dbevindex, Vector<bool> *selected);
      62  Vector<bool> *dbeGetIndxTabSelectionState (int dbevindex);
      63  void dbeSetIndxTabSelectionState (int dbevindex, Vector<bool> *selected);
      64  Vector<char*> *dbeGetLoadObjectName (int dbevindex);
      65  Vector<void *> *dbeGetLoadObjectList (int dbevindex);
      66  Vector<char*> *dbeGetSearchPath (int dbevindex);
      67  void dbeSetSearchPath (int dbevindex, Vector<char*> *path);
      68  Vector<void*> *dbeGetPathmaps (int dbevindex);
      69  char *dbeSetPathmaps (Vector<char*> *from, Vector<char*> *to);
      70  char *dbeAddPathmap (int dbevindex, char *from, char *to);
      71  char *dbeGetMsg (int dbevindex, int type);
      72  int dbeInitView (int index, int cloneindex);
      73  void dbeDeleteView (int dbevindex);
      74  
      75  //	methods concerning metrics
      76  MetricList *dbeGetMetricListV2 (int dbevindex, MetricType mtype,
      77  				Vector<int> *type, Vector<int> *subtype,
      78  				Vector<bool> *sort, Vector<int> *vis,
      79  				Vector<char*> *aux, Vector<char*> *expr_spec,
      80  				Vector<char*> *legends);
      81  Vector<void*> *dbeGetRefMetricsV2 ();
      82  Vector<void*> *dbeGetCurMetricsV2 (int dbevindex, MetricType mtype);
      83  void dbeSetSort (int dbevindex, int sort_index, MetricType mtype, bool reverse);
      84  
      85  //	methods concerning metrics for Overview Tab
      86  Vector<void*> *dbeGetRefMetricTree (int dbevindex, bool include_unregistered);
      87  Vector<void*> *dbeGetRefMetricTreeValues (int dbevindex, Vector<char *> *met_cmds,
      88  					  Vector<char *> *non_met_cmds);
      89  Vector<char*> *dbeGetOverviewText (int dbevindex);
      90  Vector<int> *dbeGetAnoValue (int dbevindex);
      91  void dbeSetAnoValue (int dbevindex, Vector<int> *set);
      92  int dbeGetNameFormat (int dbevindex);
      93  bool dbeGetSoName (int dbevindex);
      94  void dbeSetNameFormat (int dbevindex, int fnames, bool soname);
      95  int dbeGetViewMode (int dbevindex);
      96  void dbeSetViewMode (int dbevindex, int nmode);
      97  Vector<void*> *dbeGetTLValue (int dbevindex);
      98  void dbeSetTLValue (int dbevindex, const char *tldata_cmd,
      99  		    int entitiy_prop_id, int stackalign, int stackdepth);
     100  Vector<void*> *dbeGetExpFounderDescendants ();
     101  Vector<void*> *dbeGetExpSelection (int dbevindex);
     102  Vector<void*> *dbeGetSampleStatus (int dbevindex, int nselected,
     103  				   Vector<bool> *selected);
     104  Vector<unsigned> *dbeGetSampleSize (int dbevindex, Vector<bool> *selected);
     105  char *dbeCheckPattern (int dbevindex, Vector<bool> *selected, char *pattern,
     106  		       int type);
     107  char *dbeSetFilterStr (int dbevindex, char *filter_str);
     108  char *dbeGetFilterStr (int dbevindex);
     109  int dbeValidateFilterExpression (char *str_expr);
     110  Vector<void*> *dbeGetFilterKeywords (int dbevindex);
     111  Vector<void*> *dbeGetFilters (int dbevindex, int nexp);
     112  bool dbeUpdateFilters (int dbevindex, Vector<bool> *selected,
     113  		       Vector<char*> *pattern_str);
     114  char *dbeComposeFilterClause (int dbevindex, int type, int subtype,
     115  			      Vector<int>*selections);
     116  Vector<int> *dbeGetLoadObjectState (int dbevindex);
     117  void dbeSetLoadObjectState (int dbevindex, Vector<int> *selected);
     118  void dbeSetLoadObjectDefaults (int dbevindex);
     119  Vector<void*> *dbeGetMemObjects (int dbevindex);
     120  char *dbeDefineMemObj (char *name, char *index_expr, char *_machmodel,
     121  		       char *sdesc, char *ldesc);
     122  char *dbeDeleteMemObj (char *name);
     123  Vector<char*> *dbeGetCPUVerMachineModel (int dbevindex);
     124  char *dbeLoadMachineModel (char *name);
     125  char *dbeGetMachineModel ();
     126  Vector<char*> *dbeListMachineModels ();
     127  void dbeDetectLoadMachineModel (int dbevindex);
     128  Vector<void*> *dbeGetIndxObjDescriptions (int dbevindex);
     129  Vector<void*> *dbeGetCustomIndxObjects (int dbevindex);
     130  char *dbeDefineIndxObj (char *name, char *index_expr, char *sdesc, char *ldesc);
     131  void dbeSetSelObj (int dbevindex, Obj sel_obj, int type, int subtype);
     132  void dbeSetSelObjV2 (int dbevindex, uint64_t id);
     133  Obj dbeGetSelObj (int dbevindex, int type, int subtype);
     134  uint64_t dbeGetSelObjV2 (int dbevindex, char *typeStr);
     135  int dbeGetSelIndex (int dbevindex, Obj sel_obj, int type, int subtype);
     136  Vector<uint64_t> *dbeGetSelObjsIO (int dbevindex, Vector<uint64_t> *ids, int type);
     137  Vector<uint64_t> *dbeGetSelObjIO (int dbevindex, uint64_t id, int type);
     138  uint64_t dbeGetSelObjHeapTimestamp (int dbevindex, uint64_t id);
     139  int dbeGetSelObjHeapUserExpId (int dbevindex, uint64_t id);
     140  char *dbeSetPrintLimit (int dbevindex, int limit);
     141  int dbeGetPrintLimit (int dbevindex);
     142  char *dbeSetPrintMode (int dbevindex, char *printmode);
     143  int dbeGetPrintMode (int dbevindex);
     144  char *dbeGetPrintModeString (int dbevindex);
     145  char dbeGetPrintDelim (int dbevindex);
     146  Vector<void*> *dbeGetTotals (int dbevindex, int dsptype, int subtype);
     147  Vector<void*> *dbeGetHotMarks (int dbevindex, int type);
     148  Vector<void*> *dbeGetHotMarksInc (int dbevindex, int type);
     149  Vector<void*> *dbeGetSummaryHotMarks (int dbevindex, Vector<Obj> *sel_objs, int type);
     150  Vector<uint64_t> *dbeGetFuncId (int dbevindex, int type, int begin, int length);
     151  Vector<void*> *dbeGetFuncCalleeInfo (int dbevindex, int type, Vector<int>* idxs, int groupId);
     152  Vector<void*> *dbeGetFuncCallerInfo (int dbevindex, int type, Vector<int>* idxs, int groupId);
     153  Vector<void*> *dbeGetFuncCalleeInfoById (int dbevindex, int type, int idx);
     154  Vector<void*> *dbeGetFuncCallerInfoById (int dbevindex, int type, int idx);
     155  char *dbePrintData (int dbevindex, int type, int subtype, char *printer,
     156  		    char *fname, FILE *outfile);
     157  int dbeSetFuncData (int dbevindex, Obj sel_obj, int type, int subtype);
     158  Vector<void*> *dbeGetFuncList (int dbevindex, int type, int subtype);
     159  Vector<void*> *dbeGetFuncListV2 (int dbevindex, int mtype, Obj sel_obj, int type, int subtype);
     160  Vector<void*> *dbeGetFuncListMini (int dbevindex, int type, int subtype);
     161  Vector<Obj> *dbeGetComparableObjsV2 (int dbevindex, Obj sel_obj, int type);
     162  Obj dbeConvertSelObj (Obj obj, int type);
     163  Vector<int> *dbeGetGroupIds (int dbevindex);
     164  Vector<void*> *dbeGetTableDataV2 (int dbevindex, char *mlistStr, char *modeStr,
     165  				  char *typeStr, char *subtypeStr, Vector<uint64_t> *ids);
     166  
     167  int dbeGetCallTreeNumLevels (int dbevindex);
     168  Vector<void*> *dbeGetCallTreeLevel (int dbevindex, char *mcmd, int level);
     169  Vector<void*> *dbeGetCallTreeLevels (int dbevindex, char *mcmd);
     170  Vector<void*> *dbeGetCallTreeChildren (int dbevindex, char *mcmd, Vector<int /*NodeIdx*/>*nodes);
     171  Vector<void*> *dbeGetCallTreeLevelFuncs (int dbevindex, int level_start, int level_end);
     172  Vector<void*> *dbeGetCallTreeFuncs (int dbevindex);
     173  Vector<char*> *dbeGetNames (int dbevindex, int type, Obj sel_obj);
     174  Vector<void*> *dbeGetTotalMax (int dbevindex, int type, int subtype);
     175  Vector<void*> *dbeGetStatisOverviewList (int dbevindex);
     176  Vector<void*> *dbeGetStatisList (int dbevindex);
     177  Vector<void*> *dbeGetSummary (int dbevindex, Vector<Obj> *objs, int type, int subtype);
     178  Vector<void*> *dbeGetSummaryV2 (int dbevindex, Vector<Obj> *objs, int type, int subtype);
     179  Vector<int> *dbeGetFounderExpId (Vector<int> *expIds);
     180  Vector<int> *dbeGetUserExpId (Vector<int> *expIds); // filter "user visible" experiment id
     181  Vector<int> *dbeGetExpGroupId (Vector<int> *expIds);
     182  char *dbeGetExpName (int dbevindex, char *dir_name);
     183  Vector<char*> *dbeGetHwcHelp (int dbevindex, bool forKernel);
     184  Vector<Vector<char*>*> *dbeGetHwcSets (int dbevindex, bool forKernel);
     185  Vector<void*> *dbeGetHwcsAll (int dbevindex, bool forKernel);
     186  Vector<char*> *dbeGetHwcAttrList (int dbevindex, bool forKernel);
     187  int dbeGetHwcMaxConcurrent (int dbevindex, bool forKernel);
     188  int dbeGetHwcMaxReg (int dbevindex); // TBR?
     189  
     190  Vector<char*> *dbeGetIfreqData (int dbevindex);
     191  Vector<void*> *dbeGetLeakListInfo (int dbevindex, bool leakflag);
     192  Vector<void*> *dbeMpviewGetTlFuncReps (int dbevindex, int exp_id,
     193  				       long long binSizeTime, long long startTime, long long endTime,
     194  				       long long binSizeRank, long long startRank, long long endRank);
     195  Vector<void*> *dbeMpviewGetTlMsgReps (int dbevindex, int exp_id, int throttle,
     196  				      long long binSizeTime, long long startTime, long long endTime,
     197  				      long long binSizeRank, long long startRank, long long endRank);
     198  Vector<long long> *dbeMpviewGetAxisRange (int dbevindex, int exp_id,
     199  					  int chart_type, int axis_type);
     200  Vector<char*> *dbeMpviewGetAxisDiscreteLabels (int dbevindex, int exp_id,
     201  					       int chart_type, int axis_type);
     202  Vector<void*> *dbeMpviewGetFuncDetails (int dbevindex, int exp_id, Obj funcId);
     203  Vector<void*> *dbeMpviewGetMesgDetails (int dbevindex, int exp_id, Obj mesgId);
     204  Vector<long long> *dbeMpviewGetChartData (int dbevindex, int exp_id, int ctype,
     205  					  int attr1, long long start1,
     206  					  long long end1, int nbins1,
     207  					  int attr2, long long start2,
     208  					  long long end2, int nbins2,
     209  					  int metric, int reduction);
     210  void dbeMpviewFilterSet (int dbevindex, int exp_id, Vector<int> *ctid,
     211  			 Vector<int > *axid, Vector<long long> *startVal,
     212  			 Vector<long long> *endVal);
     213  void dbeMpviewLoadStacks (int dbevindex, int exp_id);
     214  
     215  
     216  Obj dbeGetObject (int dbevindex, Obj sel_func, Obj sel_pc);
     217  char *dbeGetName (int dbevindex, int exp_id);
     218  Vector<char*> *dbeGetExpVerboseName (Vector<int> *exp_ids);
     219  long long dbeGetStartTime (int dbevindex, int exp_id);
     220  long long dbeGetRelativeStartTime (int dbevindex, int exp_id);
     221  long long dbeGetEndTime (int dbevindex, int exp_id);
     222  int dbeGetClock (int dbevindex, int exp_id);
     223  long long dbeGetWallStartSec (int dbevindex, int exp_id);
     224  char *dbeGetHostname (int dbevindex, int exp_id);
     225  Vector<void*> *dbeGetEntityProps (int dbevindex);
     226  Vector<void*> *dbeGetEntities (int dbevindex, int exp_id, int ekind);
     227  Vector<void*> *dbeGetEntitiesV2 (int dbevindex, Vector<int> *exp_ids, int ekind);
     228  Vector<void*> *dbeGetTLDetails (int dbevindex, int exp_id, int data_id,
     229  				int entity_prop_id, Obj event_id);
     230  Vector<Obj> *dbeGetStackFunctions (int dbevindex, Obj stack);
     231  Vector<void*> *dbeGetStacksFunctions (int dbevindex, Vector<Obj> *stacks);
     232  Vector<Obj> *dbeGetStackPCs (int dbevindex, Obj stack);
     233  Vector<char*> *dbeGetStackNames (int dbevindex, Obj stack);
     234  Vector<void*> *dbeGetSamples (int dbevindex, int exp_id, int64_t lo, int64_t hi);
     235  Vector<void*> *dbeGetGCEvents (int dbevindex, int exp_id, int64_t lo, int64_t hi);
     236  Vector<Vector<char*>*>* dbeGetIOStatistics (int dbevindex);
     237  Vector<Vector<char*>*>* dbeGetHeapStatistics (int dbevindex);
     238  Vector<char*> *dbeGetFuncNames (int dbevindex, Vector<Obj> *funcs);
     239  Vector<char*> *dbeGetObjNamesV2 (int dbevindex, Vector<uint64_t> *ids);
     240  char *dbeGetFuncName (int dbevindex, Obj func);
     241  char *dbeGetObjNameV2 (int dbevindex, uint64_t id);
     242  Vector<uint64_t> *dbeGetFuncIds (int dbevindex, Vector<Obj> *funcs);
     243  uint64_t dbeGetFuncId (int dbevindex, Obj func);
     244  char *dbeGetDataspaceTypeDesc (int dbevindex, Obj stack);
     245  Vector<void*> *dbeGetDataDescriptorsV2 (int exp_id);
     246  Vector<void*> *dbeGetDataPropertiesV2 (int exp_id, int data_id);
     247  Vector<void*> *dbeGetExperimentTimeInfo (Vector<int> *exp_ids);
     248  Vector<void*> *dbeGetExperimentDataDescriptors (Vector<int> *exp_ids);
     249  
     250  /*   New Timeline Interface */
     251  Vector<long long> *dbeGetAggregatedValue (int data_id, char *lfilter, char *fexpr,
     252  					  char *pname_ts, hrtime_t start_ts,
     253  					  hrtime_t delta, int num,
     254  					  char *pname_key, char *aggr_func);
     255  Vector<char*> *dbeGetLineInfo (Obj pc);
     256  int dbeSetAlias (char *name, char *uname, char *expr);
     257  Vector<char*> *dbeGetAlias (char *name);
     258  Vector<Vector<long long>*> *dbeGetXYPlotData (int data_id, char *lfilter,
     259  					      char *arg, char *func1, char *aggr1,
     260  					      char *func2, char *aggr2,
     261  					      char *func3, char *aggr3);
     262  Vector<bool> *dbeHasTLData (int dbev_index, Vector<int> *exp_ids,
     263  			    Vector<int> *data_ids, // DATA_*
     264  			    Vector<int> *entity_prop_ids, // LWP,CPU,THR, etc
     265  			    Vector<int> *entity_prop_values,
     266  			    Vector<int> *auxs);
     267  Vector<void*> *dbeGetTLData (int dbevindex, int exp_id, int data_id,
     268  			     int entity_prop_id, int entity_prop_val, int aux,
     269  			     hrtime_t start_ts, hrtime_t delta, int num,
     270  			     bool getRepresentatives, Vector<char*> *chartProperties);
     271  Vector<long long> *dbeGetTLEventCenterTime (int dbevindex, int exp_id,
     272  					    int data_id, int entity_prop_id,
     273  					    int entity_prop_val, int aux,
     274  					    long long event_idx, long long move_count);
     275  long long dbeGetTLEventIdxNearTime (int dbevindex, int exp_id,
     276  				    int data_id,
     277  				    int entity_prop_id, int entity_prop_val, int aux,
     278  				    int searchDirection,
     279  				    long long timestamp);
     280  
     281  /*   Interface for use by Collector GUI */
     282  int dbeGetSignalValue (char *);
     283  char *dbeSendSignal (pid_t, int);
     284  char *dbeGetCollectorControlValue (char *);
     285  char *dbeSetCollectorControlValue (char *, char *);
     286  char *dbeUnsetCollectorControlValue (char *);
     287  char *dbeCheckConnection (char *);
     288  void dbe_archive (Vector<long long> *ids, Vector<const char *> *locations);
     289  void dbeSetLocation (const char *fname, const char *location);
     290  void dbeSetLocations (Vector<const char *> *fnames, Vector<const char *> *locations);
     291  Vector<void*> *dbeResolvedWith_setpath (const char *path);
     292  Vector<void*> *dbeResolvedWith_pathmap (const char *old_prefix, const char *new_prefix);
     293  
     294  #endif /* _DBE_H_ */