(root)/
binutils-2.41/
gprofng/
src/
Ovw_data.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 _OVW_DATA_H
      22  #define _OVW_DATA_H
      23  
      24  // An Ovw_data object is used to supply data for constructing an overview
      25  // display.
      26  
      27  #include "dbe_structs.h"
      28  
      29  class Sample;
      30  class DataView;
      31  
      32  class Ovw_data
      33  {
      34  public:
      35  
      36    enum OVW_LMS_STORAGE
      37    {// in display order, not LMS_* order
      38      // Note: use same display order of LMS_* in: er.rc, TimelineVariable.java,
      39      // Ovw_data.h, BaseMetricTreeNode.cc and Experiment.cc metric registration
      40      OVW_LMS_USER,
      41      OVW_LMS_SYSTEM,
      42      OVW_LMS_TRAP,
      43      OVW_LMS_USER_LOCK,
      44      OVW_LMS_DFAULT,
      45      OVW_LMS_TFAULT,
      46      OVW_LMS_KFAULT,
      47      OVW_LMS_STOPPED,
      48      OVW_LMS_WAIT_CPU,
      49      OVW_LMS_SLEEP,
      50      OVW_NUMVALS         // must be last
      51    };
      52  
      53    // Ovw_item contains one slice of data
      54    struct Ovw_item
      55    {
      56      Value values [OVW_NUMVALS + 1]; // Value list (value[0] is left over)
      57      int states;                     // Number of non-zero states
      58      Value total;                    // Total of all values
      59      int size;                       // Number of values
      60      timestruc_t start;              // Start time of sample
      61      timestruc_t duration;           // Duration of sample
      62      timestruc_t end;                // End time of sample
      63      timestruc_t tlwp;               // Total LWP time
      64      double nlwp;                    // Average number of LWPs
      65      ValueTag type;                  // Type of value
      66      int number;                     // Sample number
      67      char *start_label;              // Sample start label
      68      char *end_label;                // Sample end label
      69    };
      70  
      71    Ovw_data (DataView *, hrtime_t exp_start);
      72    Ovw_data ();
      73    ~Ovw_data ();
      74    void sum (Ovw_data *data);
      75    Ovw_item get_totals ();
      76    Ovw_item get_labels ();
      77  
      78    // zero out contents of Ovw_item
      79    static Ovw_item *reset_item (Ovw_item *item);
      80  
      81    int
      82    size ()
      83    {
      84      return ovw_items->size ();
      85    }
      86  
      87    Ovw_item
      88    fetch (int index)
      89    {
      90      return *ovw_items->fetch (index);
      91    }
      92  
      93  private:
      94    // Compute the values for "ovw_item" from "sample".
      95    void extract_data (Ovw_item *ovw_item, Sample *sample);
      96  
      97    Vector<Ovw_item*> *ovw_items;
      98    Ovw_item *totals;             // Item to cache totals
      99    DataView *packets;
     100  };
     101  
     102  #endif /* _OVW_DATA_H */