diff options
Diffstat (limited to 'gprofng/src/MemorySpace.h')
-rw-r--r-- | gprofng/src/MemorySpace.h | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/gprofng/src/MemorySpace.h b/gprofng/src/MemorySpace.h new file mode 100644 index 0000000..7d02e5e --- /dev/null +++ b/gprofng/src/MemorySpace.h @@ -0,0 +1,113 @@ +/* Copyright (C) 2021 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 _MEMORYSPACE_H +#define _MEMORYSPACE_H + +#include <stdio.h> + +#include "dbe_structs.h" +#include "vec.h" +#include "Exp_Layout.h" +#include "Histable.h" +#include "Hist_data.h" +#include "Metric.h" +#include "HashMap.h" + +class Experiment; +class Expression; +class DataView; +class DbeView; +class MemObj; + +class MemObjType_t +{ +public: + MemObjType_t (); + ~MemObjType_t (); + int type; + char *name; + char *index_expr; + char *machmodel; + char mnemonic; + char *short_description; + char *long_description; +}; + +class MemorySpace +{ +public: + + MemorySpace (DbeView *_dbev, int subtype); + ~MemorySpace (); + + void reset (void); + + int + getMemObjType (void) + { + return mstype; + } + + char * + getMemObjTypeName (void) + { + return msname; + } + + Expression * + getMemObjDef (void) + { + return msindex_exp; + } + + // static members, used to define or fetch the various MemorySpaces + static void get_filter_keywords (Vector <void*> *res); + static Vector<void*> *getMemObjects (void); + static void set_MemTabOrder (Vector<int> *); + static char *mobj_define (char *, char *, char *, char *, char *); + static char *mobj_delete (char *); + static MemObjType_t *findMemSpaceByName (const char *mname); + static MemObjType_t *findMemSpaceByIndex (int index); + static char pickMnemonic (char *name); + static Vector<char *> *getMachineModelMemObjs (char *); + +private: + HashMap<uint64_t, MemObj*> *objs; + int findMemObject (uint64_t indx); + MemObj *lookupMemObject (Experiment *exp, DataView*, long); + MemObj *createMemObject (uint64_t, char *moname); + + int mstype; // type of this memory space + char *msname; // name of this memory space + Expression *msindex_exp; // index-expression for this memory space + char *msindex_exp_str; // string for index-expression + Hist_data *hist_data_all; // the cached data for mode=Hist_Data::ALL + uint64_t selected_mo_index; // which page, cacheline, etc. + int sel_ind; // index of selected object in list + DbeView *dbev; + int phaseIdx; + uint64_t idx_min; + uint64_t idx_max; + MemObj *unk_memobj; + MemObj *total_memobj; +}; + +#endif /* _MEMORYSPACE_H */ |