/* Copyright (C) 2021-2023 Free Software Foundation, Inc. Contributed by Oracle. This file is part of GNU Binutils. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef _OVW_DATA_H #define _OVW_DATA_H // An Ovw_data object is used to supply data for constructing an overview // display. #include "dbe_structs.h" class Sample; class DataView; class Ovw_data { public: enum OVW_LMS_STORAGE {// in display order, not LMS_* order // Note: use same display order of LMS_* in: er.rc, TimelineVariable.java, // Ovw_data.h, BaseMetricTreeNode.cc and Experiment.cc metric registration OVW_LMS_USER, OVW_LMS_SYSTEM, OVW_LMS_TRAP, OVW_LMS_USER_LOCK, OVW_LMS_DFAULT, OVW_LMS_TFAULT, OVW_LMS_KFAULT, OVW_LMS_STOPPED, OVW_LMS_WAIT_CPU, OVW_LMS_SLEEP, OVW_NUMVALS // must be last }; // Ovw_item contains one slice of data struct Ovw_item { Value values [OVW_NUMVALS + 1]; // Value list (value[0] is left over) int states; // Number of non-zero states Value total; // Total of all values int size; // Number of values timestruc_t start; // Start time of sample timestruc_t duration; // Duration of sample timestruc_t end; // End time of sample timestruc_t tlwp; // Total LWP time double nlwp; // Average number of LWPs ValueTag type; // Type of value int number; // Sample number char *start_label; // Sample start label char *end_label; // Sample end label }; Ovw_data (DataView *, hrtime_t exp_start); Ovw_data (); ~Ovw_data (); void sum (Ovw_data *data); Ovw_item get_totals (); Ovw_item get_labels (); // zero out contents of Ovw_item static Ovw_item *reset_item (Ovw_item *item); int size () { return ovw_items->size (); } Ovw_item fetch (int index) { return *ovw_items->fetch (index); } private: // Compute the values for "ovw_item" from "sample". void extract_data (Ovw_item *ovw_item, Sample *sample); Vector *ovw_items; Ovw_item *totals; // Item to cache totals DataView *packets; }; #endif /* _OVW_DATA_H */