aboutsummaryrefslogtreecommitdiff
path: root/gprofng/src/FileData.h
diff options
context:
space:
mode:
Diffstat (limited to 'gprofng/src/FileData.h')
-rw-r--r--gprofng/src/FileData.h522
1 files changed, 522 insertions, 0 deletions
diff --git a/gprofng/src/FileData.h b/gprofng/src/FileData.h
new file mode 100644
index 0000000..67de689
--- /dev/null
+++ b/gprofng/src/FileData.h
@@ -0,0 +1,522 @@
+/* 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 _FILEDATA_H
+#define _FILEDATA_H
+
+#include "gp-defs.h"
+#include "gp-time.h"
+
+#include "vec.h"
+#include "data_pckts.h"
+#include "Histable.h"
+
+#define FSTYPESZ 16
+
+#define VIRTUAL_FD_TOTAL 0
+#define VIRTUAL_FD_STDIN 1
+#define VIRTUAL_FD_STDOUT 2
+#define VIRTUAL_FD_STDERR 3
+#define VIRTUAL_FD_OTHERIO 4
+#define VIRTUAL_FD_NONE -1
+
+#define STDIN_FD 0
+#define STDOUT_FD 1
+#define STDERR_FD 2
+#define OTHERIO_FD -1
+
+#define OTHERIO_FILENAME "<Other IO activity>"
+#define STDIN_FILENAME "<stdin>"
+#define STDOUT_FILENAME "<stdout>"
+#define STDERR_FILENAME "<stderr>"
+#define TOTAL_FILENAME NTXT("<Total>")
+#define UNKNOWNFD_FILENAME "<pipe(), socket(), or other fds>"
+
+#define _1KB 1024
+#define _8KB 8192
+#define _32KB 32768
+#define _128KB 131072
+#define _256KB 262144
+#define _512KB 524288
+#define _1000KB 1048576
+#define _10MB 10485760
+#define _100MB 104857600
+#define _1GB 1073741824
+#define _10GB 10737418240
+#define _100GB 107374182400
+#define _1TB 1099511627776
+#define _10TB 10995116277760
+
+class FileData : public Histable
+{
+ friend class IOActivity;
+public:
+ FileData (const char *fName);
+ FileData (FileData *fData);
+ ~FileData ();
+
+ virtual char *get_name (Histable::NameFormat nfmt);
+ virtual Histable *convertto (Histable_type, Histable* = NULL);
+
+ char *get_raw_name (Histable::NameFormat nfmt);
+ void setFsType (FileSystem_type fst);
+ void setFsType (const char* fst);
+
+ virtual Histable_type
+ get_type ()
+ {
+ return histType;
+ };
+
+ virtual uint64_t
+ get_addr ()
+ {
+ return virtualFd;
+ };
+
+ uint64_t
+ get_index ()
+ {
+ return virtualFd;
+ };
+
+ void init ();
+
+ char *
+ getFileName ()
+ {
+ return fileName;
+ }
+
+ void
+ addReadEvent (hrtime_t rt, int64_t nb)
+ {
+ readTime += rt;
+ readBytes += nb;
+ readCnt++;
+ }
+
+ hrtime_t
+ getReadTime ()
+ {
+ return readTime;
+ }
+
+ int64_t
+ getReadBytes ()
+ {
+ return readBytes;
+ }
+
+ int32_t
+ getReadCnt ()
+ {
+ return readCnt;
+ }
+
+ void
+ addWriteEvent (hrtime_t wt, int64_t nb)
+ {
+ writeTime += wt;
+ writeBytes += nb;
+ writeCnt++;
+ }
+
+ hrtime_t
+ getWriteTime ()
+ {
+ return writeTime;
+ }
+
+ int64_t
+ getWriteBytes ()
+ {
+ return writeBytes;
+ }
+
+ int32_t
+ getWriteCnt ()
+ {
+ return writeCnt;
+ }
+
+ void
+ addOtherEvent (hrtime_t ot)
+ {
+ otherTime += ot;
+ otherCnt++;
+ }
+
+ hrtime_t
+ getOtherTime ()
+ {
+ return otherTime;
+ }
+
+ int32_t
+ getOtherCnt ()
+ {
+ return otherCnt;
+ }
+
+ void
+ addErrorEvent (hrtime_t er)
+ {
+ errorTime += er;
+ errorCnt++;
+ }
+
+ hrtime_t
+ getErrorTime ()
+ {
+ return errorTime;
+ }
+
+ int32_t
+ getErrorCnt ()
+ {
+ return errorCnt;
+ }
+
+ void setFileDesList (int fd);
+
+ Vector<int> *
+ getFileDesList ()
+ {
+ return fileDesList;
+ }
+
+ void
+ setFileDes (int fd)
+ {
+ fileDes = fd;
+ }
+
+ int32_t
+ getFileDes ()
+ {
+ return fileDes;
+ }
+
+ void setVirtualFds (int64_t vfd);
+
+ Vector<int64_t> *
+ getVirtualFds ()
+ {
+ return virtualFds;
+ }
+
+ char *
+ getFsType ()
+ {
+ return fsType;
+ }
+
+ void
+ setVirtualFd (int64_t vFd)
+ {
+ virtualFd = vFd;
+ }
+
+ int64_t
+ getVirtualFd ()
+ {
+ return virtualFd;
+ }
+
+ void
+ setHistType (Histable::Type hType)
+ {
+ histType = hType;
+ }
+
+ Histable::Type
+ getHistType ()
+ {
+ return histType;
+ }
+
+ void setWriteStat (hrtime_t wt, int64_t nb);
+
+ hrtime_t
+ getWSlowestBytes ()
+ {
+ return wSlowestBytes;
+ }
+
+ int64_t
+ getWSmallestBytes ()
+ {
+ return wSmallestBytes;
+ }
+
+ int64_t
+ getWLargestBytes ()
+ {
+ return wLargestBytes;
+ }
+
+ int32_t
+ getW0KB1KBCnt ()
+ {
+ return w0KB1KBCnt;
+ }
+
+ int32_t
+ getW1KB8KBCnt ()
+ {
+ return w1KB8KBCnt;
+ }
+
+ int32_t
+ getW8KB32KBCnt ()
+ {
+ return w8KB32KBCnt;
+ }
+
+ int32_t
+ getW32KB128KBCnt ()
+ {
+ return w32KB128KBCnt;
+ }
+
+ int32_t
+ getW128KB256KBCnt ()
+ {
+ return w128KB256KBCnt;
+ }
+
+ int32_t
+ getW256KB512KBCnt ()
+ {
+ return w256KB512KBCnt;
+ }
+
+ int32_t
+ getW512KB1000KBCnt ()
+ {
+ return w512KB1000KBCnt;
+ }
+
+ int32_t
+ getW1000KB10MBCnt ()
+ {
+ return w1000KB10MBCnt;
+ }
+
+ int32_t
+ getW10MB100MBCnt ()
+ {
+ return w10MB100MBCnt;
+ }
+
+ int32_t
+ getW100MB1GBCnt ()
+ {
+ return w100MB1GBCnt;
+ }
+
+ int32_t
+ getW1GB10GBCnt ()
+ {
+ return w1GB10GBCnt;
+ }
+
+ int32_t
+ getW10GB100GBCnt ()
+ {
+ return w10GB100GBCnt;
+ }
+
+ int32_t
+ getW100GB1TBCnt ()
+ {
+ return w100GB1TBCnt;
+ }
+
+ int32_t
+ getW1TB10TBCnt ()
+ {
+ return w1TB10TBCnt;
+ }
+
+ void setReadStat (hrtime_t rt, int64_t nb);
+
+ hrtime_t
+ getRSlowestBytes ()
+ {
+ return rSlowestBytes;
+ }
+
+ int64_t
+ getRSmallestBytes ()
+ {
+ return rSmallestBytes;
+ }
+
+ int64_t
+ getRLargestBytes ()
+ {
+ return rLargestBytes;
+ }
+
+ int32_t
+ getR0KB1KBCnt ()
+ {
+ return r0KB1KBCnt;
+ }
+
+ int32_t
+ getR1KB8KBCnt ()
+ {
+ return r1KB8KBCnt;
+ }
+
+ int32_t
+ getR8KB32KBCnt ()
+ {
+ return r8KB32KBCnt;
+ }
+
+ int32_t
+ getR32KB128KBCnt ()
+ {
+ return r32KB128KBCnt;
+ }
+
+ int32_t
+ getR128KB256KBCnt ()
+ {
+ return r128KB256KBCnt;
+ }
+
+ int32_t
+ getR256KB512KBCnt ()
+ {
+ return r256KB512KBCnt;
+ }
+
+ int32_t
+ getR512KB1000KBCnt ()
+ {
+ return r512KB1000KBCnt;
+ }
+
+ int32_t
+ getR1000KB10MBCnt ()
+ {
+ return r1000KB10MBCnt;
+ }
+
+ int32_t
+ getR10MB100MBCnt ()
+ {
+ return r10MB100MBCnt;
+ }
+
+ int32_t
+ getR100MB1GBCnt ()
+ {
+ return r100MB1GBCnt;
+ }
+
+ int32_t
+ getR1GB10GBCnt ()
+ {
+ return r1GB10GBCnt;
+ }
+
+ int32_t
+ getR10GB100GBCnt ()
+ {
+ return r10GB100GBCnt;
+ }
+
+ int32_t
+ getR100GB1TBCnt ()
+ {
+ return r100GB1TBCnt;
+ }
+
+ int32_t
+ getR1TB10TBCnt ()
+ {
+ return r1TB10TBCnt;
+ }
+
+private:
+ char *fileName; // File name
+ hrtime_t readTime; // The Total time for read operations;
+ hrtime_t writeTime; // The Total time for write operations;
+ hrtime_t otherTime; // The Total time for other IO operations;
+ hrtime_t errorTime; // The Total time for failed IO operations;
+ int64_t readBytes; //The total bytes read
+ int64_t writeBytes; //The total bytes written
+ int32_t readCnt; // The read count
+ int32_t writeCnt; // The write count
+ int32_t otherCnt; // The other IO count
+ int32_t errorCnt; // The failed IO count
+ Vector<int> *fileDesList; // The list of file descriptors
+ Vector<int64_t> *virtualFds; // The list of file virtual descriptors
+ char fsType[FSTYPESZ]; // The file system type
+ int64_t virtualFd; // The virtual file descriptor
+ int32_t fileDes; // The file descriptor
+ Histable::Type histType; // The Histable type: IOACTFILE, IOACTVFD, ...
+
+ // Write statistics
+ hrtime_t wSlowestBytes;
+ int64_t wSmallestBytes;
+ int64_t wLargestBytes;
+ int32_t w0KB1KBCnt;
+ int32_t w1KB8KBCnt;
+ int32_t w8KB32KBCnt;
+ int32_t w32KB128KBCnt;
+ int32_t w128KB256KBCnt;
+ int32_t w256KB512KBCnt;
+ int32_t w512KB1000KBCnt;
+ int32_t w1000KB10MBCnt;
+ int32_t w10MB100MBCnt;
+ int32_t w100MB1GBCnt;
+ int32_t w1GB10GBCnt;
+ int32_t w10GB100GBCnt;
+ int32_t w100GB1TBCnt;
+ int32_t w1TB10TBCnt;
+
+ // Read statistics
+ hrtime_t rSlowestBytes;
+ int64_t rSmallestBytes;
+ int64_t rLargestBytes;
+ int32_t r0KB1KBCnt;
+ int32_t r1KB8KBCnt;
+ int32_t r8KB32KBCnt;
+ int32_t r32KB128KBCnt;
+ int32_t r128KB256KBCnt;
+ int32_t r256KB512KBCnt;
+ int32_t r512KB1000KBCnt;
+ int32_t r1000KB10MBCnt;
+ int32_t r10MB100MBCnt;
+ int32_t r100MB1GBCnt;
+ int32_t r1GB10GBCnt;
+ int32_t r10GB100GBCnt;
+ int32_t r100GB1TBCnt;
+ int32_t r1TB10TBCnt;
+};
+
+#endif